Gur*_*epS 6 unit-testing mocking
单元测试代码库时,我需要使用模拟对象的迹象是什么?
这会像在代码库中看到很多对其他对象的调用一样简单吗?
另外,我如何单元测试不返回值的方法?因此,如果我的方法返回void但打印到文件,我只是检查文件的内容吗?
模拟是针对外部依赖的,所以这就是一切,不是吗?文件系统,数据库,网络等......
如果有的话,我可能过度使用模拟。
每当一个类调用另一个类时,通常我会模拟该调用,并验证该调用是否使用正确的参数进行。在其他地方,我将进行一个单元测试,检查模拟对象的具体代码行为是否正确。
例子:
[Test]
public void FooMoo_callsBarBaz_whenXisGreaterThan5()
{
int TEST_DATA = 6;
var bar = new Mock<Bar>();
bar.Setup(x => x.Baz(It.Is<int>(i == TEST_DATA)))
.Verifiable();
var foo = new Foo(bar.Object);
foo.moo(TEST_DATA);
bar.Verify();
}
...
[Test]
public void BarBaz_doesSomething_whenCalled()
{
// another test
}
Run Code Online (Sandbox Code Playgroud)
对我来说,如果我尝试将许多类作为一个大的整体进行测试,那么通常会有大量的设置代码。当您尝试了解所有依赖项时,这不仅读起来相当混乱,而且当需要进行更改时,它也非常脆弱。
我更喜欢小型简洁的测试。更容易编写,更容易维护,更容易理解测试的意图。
| 归档时间: |
|
| 查看次数: |
2449 次 |
| 最近记录: |