【发布时间】:2016-12-15 18:43:32
【问题描述】:
我有一个从资源文件返回字符串的成员,我想对此进行单元测试,因为有很多并且可能会被错误地更改。我知道这可以使用反射来实现,但我被要求以不使用反射的方式来实现。
成员看起来像这样;
protected override string StringOne
{
get
{
return Resources.String;
}
}
我了解为会员设置退货可以这样做:
mock.Protected()
.Setup<string>("StringOne")
.Returns("Returned string.");
和 .verifiable() 可以添加到此末尾。但我找不到如何验证正在返回的字符串。还是我认为通过使用 .verifiable() 进行设置,.returns("") 值是预期的,并调用
mock.Verify();
将验证成员是否返回了正确的字符串,或者只是验证成员在测试期间的某个时间点被调用?
【问题讨论】:
-
Veriffy只是检查被模拟的成员是否被实际调用。它不会验证被模拟的成员是否返回您设置的内容。您不想检查模拟是否正常工作(我想这应该由最小起订量来确保),但如果它实际上是 调用 -
是的,我认为它不会那么简单,有什么令人难以置信的反对使用继承从单元测试类派生我正在测试的类?
-
您想从您的类派生来测试以模拟其成员之一?
-
只需对测试的预期和实际结果进行断言。
-
记录一下,仅仅因为你没有直接使用反射并不意味着被调用的框架没有使用反射。如果您查看
Moq.Protected的源代码,您会发现该框架实际上是在后台使用反射。
标签: c# unit-testing moq