4

我试图让我的简单模拟工作,但这太乏味了。我在这个地方犯了一个错误

(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); });
}
4

1 回答 1

5

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

所以你需要写:

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

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

.Returns((string s1, string s2) => { return (string)(s1 + s2); });
于 2012-09-01T13:27:15.447 回答