gpt4 book ai didi

unit-testing - 单元测试无效方法/模拟对象指示标志

转载 作者:行者123 更新时间:2023-12-04 16:03:07 26 4
gpt4 key购买 nike

在对代码库进行单元测试时,我需要使用模拟对象的迹象是什么?

这会像在代码库中看到很多对其他对象的调用一样简单吗?

另外,我将如何对不返回值的方法进行单元测试?因此,如果我的方法返回 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
}

对我来说,事情是,如果我尝试将许多类作为一个大团来测试,那么通常会有大量的设置代码。这不仅在您试图了解所有依赖项时阅读起来非常困惑,而且在需要进行更改时非常脆弱。

我更喜欢小型简洁的测试。更容易编写,更容易维护,更容易理解测试的意图。

关于unit-testing - 单元测试无效方法/模拟对象指示标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2255772/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com