我在c♯中有以下代码,但无法确定如何测试它;我需要测试aMethodUnderTest。我无法更改ABaseClass,因为它在库中。但是,如果我要测试AClass,我需要能够设置theThing返回的内容。有没有人对此类代码测试有任何想法或经验?
public ABaseClass
{
protected ThingBaseClass theThing {get;}
public virtual ....
...
}
public AClassUnderTest : ABaseClass
{
public MyThing Thing
{
get
{
return (MyThing)base.theThing;
}
}
public void aMethedUnderTest()
{
Thing.doSomething();
}
}
注意:theThing的初始值为null。 theThing没有公共制定者。
答案 0 :(得分:1)
我认为您可以创建继承ABaseClass的mock,然后检查AClass.Thing是否返回与ABaseClassMock.theThing相同的结果
答案 1 :(得分:0)
您可以使用像Moles这样的模拟库。因此,您可以从测试代码中设置“thing”的值。 http://research.microsoft.com/en-us/projects/moles/
答案 2 :(得分:0)
您可以使用ABaseClass
创建theThing
的模拟并仍设置MOQ
(即使它没有设置者)
var mock = new Mock<ABaseClass>();
mock.SetupGet(x => x.theThing).Returns(\*Whatever you need*\);