0

Is there a way to mock a .NET library loaded with clr.AddReference(), without the presence of the actual dll?

My code:

import clr
clr.AddReference("lib/MyDeviceDriver")

import MyDeviceDriver

class MyClass:
    def __init__(self):
        self.__deviceAPI = MyDeviceDriver.Create()
.
.
.

My Unittest code:

    def test_func(self):
        my_object = MyClass()

Failure:

>       self.__deviceAPI = MyDeviceDriver.Create()
E       System.Runtime.SomeLibrary.COMException: Retrieving the COM class factory for component with CLSID {9F8D4F16-0F61-4A38-98B3-1F6F80F11C87} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

I'd like to unittest MyClass without needing the library in the path or any classes registered in the registry.

Is there a way to do that? I tried patching with various types of errors. I tried patching AddReference, MyDeviceDriver with no success. Essentially from python's unittest docs it appears that "patch" needs the original library available.

maanijou
  • 1,067
  • 1
  • 14
  • 23

1 Answers1

0

Since it is Python, can't you do

import MyCode
import unittest

class DriverMock(): pass

MyCode.MyDeviceDriver = DriverMock

def test_func():
    my_object = MyClass()
LOST
  • 2,956
  • 3
  • 25
  • 40