[英]Testing an inheriting C# class
我在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沒有公共制定者。
我想你可以創建繼承ABaseClass的mock,然后檢查AClass.Thing是否返回與ABaseClassMock.theThing相同的結果
您可以使用像Moles這樣的模擬庫。 因此,您可以從測試代碼中設置“thing”的值。 http://research.microsoft.com/en-us/projects/moles/
你可以創建一個ABaseClass
的模擬,並仍然使用MOQ
設置theThing
(即使它沒有setter)
var mock = new Mock<ABaseClass>();
mock.SetupGet(x => x.theThing).Returns(\*Whatever you need*\);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.