我想知道,有没有办法制作接口的存根,自动实现此接口的所有属性,特别是当它们是非基类型时。 示例:
public interface TopInterface
{
int Counter { get; set; }
SubLevel1Interface ChildObject { get; set; }
SubLevel1Interface OtherChildObject { get; set; }
}
public interface SubLevel1Interface
{
string SomeText { get; set; }
SubLevel2Interface SomeObject { get; set; }
}
public interface SubLevel2Interface
{
DateTime dateOfMotezumaBirthday { get; set; }
}
当我存根TopInterface类时,所有非stubed属性的默认行为是抛出null。为了我的测试目的,这些属性不能为空。这导致我被迫写了大量的琐碎代码,如:
StubTopInterface someStub = new StubTopInterface
{
CounterGet = () => 15,
ChildObjectGet = () => new StubSubLevel1Interface
{
SomeTextGet = () => string.Empty,
SomeObjectGet = () => new StubSubLevel2Interface(),
},
OtherChildObjectGet = () => new StubSubLevel1Interface
{
SomeTextGet = () => "FooBaal",
SomeObjectGet = () => new StubSubLevel2Interface(),
},
};
当Counter - 其他对象的属性不能为null时。如果有一些方法可以写一些像我这样的话,我会很高兴:
StubTopInterface someStub = new StubTopInterface
{
CounterGet = () => 15,
}
对象的其余部分将自动存根。 有没有办法实现这个目标?
答案 0 :(得分:0)
如果要更改默认行为,则必须编写代码。除了可用的内容之外,无法自动生成此内容。
保存代码重写的正确方法是将其重构到一个公共位置,比如说你的类/测试初始化然后覆盖每个测试用例的行为。