相关疑难解决方法(0)

依赖注入和模拟框架之间的区别(Ninject vs RhinoMock或Moq)

那么Ninject和像RhinoMock或moq这样的模拟框架之间的区别是什么?我谷歌这个,但它仍然不清楚.

.net c# dependency-injection mocking

39
推荐指数
2
解决办法
2万
查看次数

@ mock.patch如何知道每个模拟对象使用哪个参数?

查看此网页: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)

python unit-testing mocking

7
推荐指数
1
解决办法
923
查看次数

标签 统计

mocking ×2

.net ×1

c# ×1

dependency-injection ×1

python ×1

unit-testing ×1