那么Ninject和像RhinoMock或moq这样的模拟框架之间的区别是什么?我谷歌这个,但它仍然不清楚.
查看此网页:http://www.toptal.com/python/an-introduction-to-mocking-in-python - 作者在Python中讨论了Mocking和Patching,并提供了一个非常可靠的"真实世界"示例.绊倒我的部分是理解单元测试框架如何工作知道哪个模拟对象传递给哪个补丁.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import os.path
def rm(filename):
if os.path.isfile(filename):
os.remove(filename)
Run Code Online (Sandbox Code Playgroud)
代码示例很容易理解.对OS库/模块的硬编码依赖性.首先使用该os.path.isfile()方法检查文件是否存在,如果是,则使用删除它os.remove()
测试/模拟代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from mymodule import rm
import mock
import unittest
class RmTestCase(unittest.TestCase):
@mock.patch('mymodule.os.path')
@mock.patch('mymodule.os')
def test_rm(self, mock_os, mock_path):
# set up the mock
mock_path.isfile.return_value = False
rm("any path")
# test that the remove call was NOT called.
self.assertFalse(mock_os.remove.called, "Failed to not remove the file if not present.")
# …Run Code Online (Sandbox Code Playgroud)