我希望能够检查模拟方法是否返回字符串类型而不是特定字符串。到目前为止,我已经得到:
this.mockFoo.Setup(k => k.FooMethod(It.Is<string>(s => string.IsNullOrEmpty(s).Equals(false))));
我知道在Returns()
之后有一个Setup
方法可用。但是,它似乎想知道要返回的特定值。关键是我不想提供特定的值,因为在测试中情况并非如此。
我该如何实现?
答案 0 :(得分:0)
这不是模拟的用途。模拟程序是用于执行特定操作的安装程序,但是当您想知道函数调用是否返回特定类型时,则必须对感兴趣的类型执行函数调用。
答案 1 :(得分:-1)
我希望能够检查模拟方法是否返回字符串类型NOT 特定的字符串。
这只是要测试您的模拟正在返回您设置的返回值,即您正在测试Moq,而不是代码。
听起来您要实际测试的是您的FooMethod
已在代码中成功调用。您可以通过设置模拟方法,调用被测代码,然后验证该方法已被调用来实现。
例如:
// set up the method
mockFoo.Setup(k => k.FooMethod(It.Is<string>(s => !string.IsNullOrEmpty(s)))).Returns("mystring");
// call whatever it is under test
// verify the method was called with non-empty argument. Adjust Times argument to suit.
mockFoo.Verify(m => m.FooMethod(It.Is<string>(s => !string.IsNullOrEmpty(s)))), Times.Once());