设置Moq Mock <interface>调用返回字符串的方法

时间:2015-12-17 16:48:08

标签: c# .net unit-testing mocking moq

我有一个类和方法看起来像这样:

public class FieldLookup : IFieldLookup
{
    public string LookupField(string Var1, string Var2)
    {
        // do a database lookup
    }
}

这在它与Dependency Injection一起使用的实际类中工作正常。我试图弄清楚的是,在单元测试中,我是如何使用Moq框架来模拟对此方法的调用。

var fieldLookup = new Mock<IFieldLookup>();

然后,我该怎么做......?

fieldLookup.Setup<string>(x => x.LookupField("", "").Returns("something"));
fieldLookup.Setup(x => x.LookupField("", "").Returns("something"));

这两个都告诉我&#34; String不包含Return&#34;的定义。一直在玩,但没有得到它。

1 个答案:

答案 0 :(得分:2)

您将括号放在错误的位置,您需要在Returns方法返回的对象上调用Setup方法。

fieldLookup.Setup<string>(x => x.LookupField("", "")).Returns("something");
fieldLookup.Setup(x => x.LookupField("", "")).Returns("something");