moq返回不起作用

时间:2012-09-01 13:17:40

标签: c# .net moq

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

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

消息说

  

“委托'System.Func'不带2个参数”

但在this文章中所有作品

我的所有代码都在这里。

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

1 个答案:

答案 0 :(得分: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); });