我刚接触单元测试,听起来好像很容易让NSubstitute返回一个空值,但我无法做到。
我已经尝试了一个应该返回Campaign方法的Get方法。
_campaigns = Substitute.For<IOptions<Campaigns>>();
_campaigns.Get(Arg.Any<string>()).Returns(null);
在生产环境中,我使用FirstOrDefault()方法返回广告系列对象,如果不存在,则返回null。因此,在我的单元测试中,我希望测试这种情况,但我无法使用NSubstitute假装它,因为编译时出现以下错误:
error CS0121: The call is ambiguous between the following methods or properties: 'SubstituteExtensions.Returns(T, T, params T[])' and 'SubstituteExtensions.Returns(T, Func, params Func[])'
我这样做是为了避免错误:
_campaigns.Get(Arg.Any<string>()).Returns((Campaign)null);
但是我在那一行遇到了执行错误:
System.NullReferenceException:对象引用未设置为对象的实例。
该错误通常表示代码尝试使用空对象进行操作,而不是已实例化的对象。要解决此问题,您需要检查代码并确保所有对象都已正确初始化。