我正在努力了解更多关于使用 Moq 进行设置和单元测试的信息。不过,我遇到了一个小问题。
我想做的是这样的:
view.Setup(x => x.GetReference("object1")).Returns(object1);
view.Setup(x => x.GetReference("object2")).Returns(null);
但是,当我以这种方式进行调用时,我从未遇到会响应 Null 语句的代码块。我应该如何设置我的设置,以便它们在被特定参数调用时以特定方式运行?
我正在努力了解更多关于使用 Moq 进行设置和单元测试的信息。不过,我遇到了一个小问题。
我想做的是这样的:
view.Setup(x => x.GetReference("object1")).Returns(object1);
view.Setup(x => x.GetReference("object2")).Returns(null);
但是,当我以这种方式进行调用时,我从未遇到会响应 Null 语句的代码块。我应该如何设置我的设置,以便它们在被特定参数调用时以特定方式运行?
moq 重载了两种返回值的方式:
instance: Returns(instance);delegate(Func<T>): Returns(()=>new Foo());我认为问题是由于使用 Returns 方法的模棱两可引起的。
因此,您需要通过以下方式为代码的第二次设置传递显式类型的 NULL:
view.Setup(x => x.GetReference("object2")).Returns((ExplicitType)null);view.Setup(x => x.GetReference("object2")).Returns(() => null);