你如何固定调用以获取属性?

时间:2011-12-30 19:58:31

标签: mocking stub fakeiteasy

考虑以下界面......

public interface MyInterface
{
    bool MyProperty { get; }
}

我试图在fakeiteasy中对此属性的get函数进行调用。

[Test]
public void Foo()
{
    var fake = A.Fake<MyInterface>();
    var sut = new MySUT(fake);
    A.CallTo(() => fake.MyProperty).Returns(true);

    var result = sut.Foo();

    Assert.IsTrue(result);
}

被测系统的Foo()方法只返回MyProperty get属性调用的值。不幸的是,这个测试总是失败。调试时,get属性似乎总是​​返回false。

如何删除get属性调用的返回值?

编辑 - 添加MySUT类的代码(根据评论中的要求)

public class MySUT
{
    private readonly MyInterface _myInterface;

    public MySUT(MyInterface myInterface)
    {
        _myInterface = myInterface;
    }

    public bool Foo()
    {
        return _myInterface.MyProperty;
    }
}

1 个答案:

答案 0 :(得分:3)

我改变了

var sut = MySUT(fake);

var sut = new MySUT(fake);

然后它在我的测试解决方案中工作。

我使用FakeItEasy 1.7.4257.42和NUnit进行测试。主要项目和测试项目分为两个不同的组件。