如何停止获取属性的调用?

发布于 2024-12-23 18:34:23 字数 925 浏览 3 评论 0 原文

考虑以下接口...

public interface MyInterface
{
    bool MyProperty { get; }
}

我试图在 get 函数的调用rel="nofollow">fakeiteasy

[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 属性似乎总是​​返回 false。

如何存根 get 属性调用的返回值?

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

public class MySUT
{
    private readonly MyInterface _myInterface;

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

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

Consider the following interface...

public interface MyInterface
{
    bool MyProperty { get; }
}

I am attempting to stub out a call to the get function of this property in fakeiteasy.

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

The system-under-test's Foo() method simply returns the value of the MyProperty get property call. Unfortunately, this test always fails. When debugging, it seems the get property is always returning false.

How can I stub out the return value of a get property call?

EDIT - Adding MySUT class's code (as requested in comments)

public class MySUT
{
    private readonly MyInterface _myInterface;

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

樱桃奶球 2024-12-30 18:34:23

我更改

var sut = MySUT(fake);

var sut = new MySUT(fake);

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

我使用 FakeItEasy 1.7.4257.42 和 NUnit 进行测试。主项目和测试项目分为两个不同的程序集。

I changed

var sut = MySUT(fake);

to

var sut = new MySUT(fake);

and then it worked in my test solution.

I used FakeItEasy 1.7.4257.42 and NUnit for the test. The main project and test project was separated in 2 different assemblies.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文