【问题标题】:Using FakeItEasy, how to get the value set on a property on a fake?使用 FakeItEasy,如何获取假属性上设置的值?
【发布时间】:2011-12-15 23:44:59
【问题描述】:

使用 FakeItEasy,我试图捕获假对象上属性值的设置:

首先是界面:

interface ISomeInterface
{
    int MyProperty {get;set;}
}

然后是单元测试的片段:

var myObject = A.Fake<ISomeInterface>();

int saved = 0;
A.CallTo (() => myObject.MyProperty).Invokes (x => saved = ?????);

SomeMethod (myObject);
Assert.That (saved, Is.EqualTo (100));

还有

void SomeMethod (ISomeInterface intf)
{
    intf.MyProperty = 100;
}

我不知道用什么来代替 ???????

【问题讨论】:

    标签: c# mocking fakeiteasy


    【解决方案1】:
    var myObject = A.Fake<ISomeInterface>();
    
    SomeMethod (myObject);
    Assert.That (saved.MyProperty, Is.EqualTo(100));
    

    【讨论】:

    • 关于您答案的第二部分,我希望假对象实际返回值 100,以便使用此接口的其他类可以使用该值。我承认我的例子不够清楚。 ;)
    • 嗯,有两种方法,要么 A.CallTo (() => myObject.MyProperty).Returns(100);或者只是 myObject.MyProperty = 100;.
    • @Patrik Hägne,我直接分配属性的第二个对我有用。第一个 A.CallTo(() => dbVM.CreateFolderPath).Returns(somePath);给我这个例外。当前代理生成器无法拦截指定方法,原因如下: - 非虚方法无法拦截。
    • @VivekDev,我猜你不是在伪造一个接口,而是一个具体的类。确保在你伪造的类中将属性设为虚拟。
    猜你喜欢
    • 1970-01-01
    • 2019-02-19
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多