FakeItEasy不允许设置值返回

时间:2014-04-24 11:46:56

标签: c# unit-testing fakeiteasy

我无法理解为什么FakeItEasy不允许我为带参数的公共方法设置返回值。

代码:

var fakeInstanse = A.Fake<SomeClass>();
A.CallTo(() => fakeInstanse.Method(param1, param1));

Method是公共的,接受两个参数。通常我会在第二行代码上调用Returns()方法,但Visual Studio不会在可用的代码中显示它。

可能会影响这种行为? SomeClassMethod定义的哪一部分可能导致此问题?

1 个答案:

答案 0 :(得分:2)

一般来说,这应该有效。看看这个通过测试:

public class SomeClass
{
    public virtual int Method(int arg1, int arg2)
    {
        return 7;
    }
}

[TestFixture]
public class TestFixture
{
    [Test]
    public void Should_be_able_to_set_return_value()
    {
        const int param1 = 9;
        var fakeInstanse = A.Fake<SomeClass>();
        A.CallTo(() => fakeInstanse.Method(param1, param1))
            .Returns(8);
        Assert.That(fakeInstanse.Method(param1, param1), Is.EqualTo(8));
    }
}

Method的返回类型是什么?根据您的描述,我猜它是void

你能告诉我们SomeClass(和SomeClass.Method)的声明吗?否则,我们无法给出建设性的答案。另外,您可以在the FakeItEasy "what can be faked" documentation page找到一些帮助。