gpt4 book ai didi

c# - 依赖于 Mocked 属性的属性

转载 作者:太空宇宙 更新时间:2023-11-03 20:18:36 27 4
gpt4 key购买 nike

我如何模拟和设置一个属性,而其他任何基于该属性的成员都不需要进行设置。

public interface IFoo{
public Foo { get; set; }
public Foo2 { get; }
}

public class Foo :IFoo{
public Foo { get; set; }
public Foo2 { get {return this.Foo +" second";} }
}


public void FooTest(){
var f = Mock<IFoo>();
f.SetupGet(x=> x.Foo).Returns("Foo");

// Should print 'Foo second' although there's no setup for Foo2
Console.Write(f.Object.Foo2);
}

最佳答案

在您的示例中,您正在创建 IFoo 接口(interface)的模拟,因此没有 Foo2 属性的实现。 Foo 对象的实现在这种情况下无关紧要,因为您永远不会实例化 Foo 对象。 f 是 IFoo 的模拟,因此与对象 Foo 没有任何关系,除了它们都实现相同的接口(interface)。你试过这样的事情吗?

var f = Mock<IFoo>();
f.SetupGet(x => x.Foo).Returns("Foo");
f.SetupGet(x => x.Foo2).Returns(f.Foo + "Second");

不过,我不确定您要完成什么,所以我只是猜测。

关于c# - 依赖于 Mocked 属性的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15077980/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com