【发布时间】:2016-11-16 07:36:19
【问题描述】:
我是单元测试的新手,在我看来,让 NSubstitute 能够为方法返回 null 应该很容易,但我无法让它工作。
我已经为应该返回 Campaign 方法的 Get 方法尝试了此方法
_campaigns = Substitute.For<IOptions<Campaigns>>();
_campaigns.Get(Arg.Any<string>()).Returns(null);
在生产中,我使用 FirstOrDefault() 方法返回活动对象,如果不存在则返回 null。所以在我的单元测试中,我想测试这种情况,但我不能用 NSubstitute 伪造它,因为编译时出现以下错误:
错误 CS0121:以下方法之间的调用不明确或 属性:'SubstituteExtensions.Returns(T, T, params T[])' 和 'SubstituteExtensions.Returns(T, Func, 参数 函数[])'
我这样做是为了避免错误:
_campaigns.Get(Arg.Any<string>()).Returns((Campaign)null);
但随后我在该行收到执行错误:
System.NullReferenceException : 对象引用未设置为 对象的实例。
【问题讨论】:
-
我认为第二个示例必须有效。你能在你得到
NullReferenceException的地方显示完整的行吗 - 你显然以某种方式使用了返回值
标签: c# unit-testing nsubstitute