moq返回不起作用

Ale*_*huk 4 .net c# moq

我试着让我的简单模拟工作,但它太繁琐了.我在这个地方犯了一个错误

(string s1, string s2) => { return (string)(s1 + s2); });

消息说明了这一点

"委托'System.Func'不接受2个参数"

但在这篇文章中都有效

这里的所有代码.

public interface IWriteTwoString
{
    string WriteTwoStrings(string s1, string s2);
}

public MyPriceReducerTest()
{
    Mock<IWriteTwoString> writeMock = new Mock<IWriteTwoString>(MockBehavior.Strict);
    writeMock.Setup(m => m.WriteTwoStrings(It.IsAny<string>(), It.IsAny<string>()))
       .Returns<string>((string s1, string s2) => { return (string)(s1 + s2); });
}
Run Code Online (Sandbox Code Playgroud)

nem*_*esv 5

你的问题是表达式:Returns<string>它告诉moq你WriteTwoStrings一个 string参数,但你有两个因此你得到一个错误.

所以你需要写:

.Returns<string, string>((string s1, string s2) => { return (string)(s1 + s2); });
Run Code Online (Sandbox Code Playgroud)

或者您可以完全省略类型,因为编译器可以推断它们:

.Returns((string s1, string s2) => { return (string)(s1 + s2); });
Run Code Online (Sandbox Code Playgroud)