检查模拟设置是否返回字符串类型

时间:2018-10-12 09:33:01

标签: c# unit-testing moq

我希望能够检查模拟方法是否返回字符串类型而不是特定字符串。到目前为止,我已经得到:

this.mockFoo.Setup(k => k.FooMethod(It.Is<string>(s => string.IsNullOrEmpty(s).Equals(false))));

我知道在Returns()之后有一个Setup方法可用。但是,它似乎想知道要返回的特定值。关键是我不想提供特定的值,因为在测试中情况并非如此。

我该如何实现?

2 个答案:

答案 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());