0

考虑以下界面...

public interface MyInterface
{
    bool MyProperty { get; }
}

我试图在fakeiteasyget中删除对这个属性的函数的调用。

[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;
    }
}
4

1 回答 1

3

我变了

var sut = MySUT(fake);

var sut = new MySUT(fake);

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

我使用 FakeItEasy 1.7.4257.42 和 NUnit 进行测试。主项目和测试项目在 2 个不同的程序集中分开。

于 2011-12-30T21:20:59.407 回答