问题描述
class A:
def __init__(self,someDict,someOtherObject):
self._someDict = someDict
self._someOtherObject = someOtherObject
def func(self):
self._someDict["key"] = None
self._someOtherObject.foo()
现在,我想检查当前被传递给foo的字典中是否存在"key"
。
class Test( unittest.TestCase ):
def test_funcShouldAddKeyToDictionaryBeforeCallingFoo(self):
objectMock = Mock()
someDict = {}
aUnderTest = A(someDict,objectMock)
aUnderTest.func()
# assert "key" in someDict when called objectMock.foo()
如何在调用foo之前检查字典中是否已有条目?
解决方法
您可以将foo
替换为执行检查的函数:
class Test(unittest.TestCase):
def test_funcShouldAddKeyToDictionaryBeforeCallingFoo(self):
def check_dict():
self.assertIn("key",someDict)
objectMock = Mock()
someDict = {}
aUnderTest = A(someDict,objectMock)
objectMock.foo = check_dict # "check_dict" will be called instead of "foo"
aUnderTest.func()
这样,您可以根据需要在经过测试的代码中调用foo
时执行检查。