[英]Rhino Mock using an expect on 'new' method call
是否有可能在Rhino模擬中進行某種形式的Expect NEW。
例:
public void ToBeTested()
{
ClassForExmaple classForExample = new ClassForExample();
//Other logic.....
}
因此,我希望單元測試調用ToBeTested(),但是當調用新的ClassForExample時,我希望它返回模擬版本。
我沒有使用Rhino模擬,也不確定RhinoMock是否支持這種方法,但是對象創建控制嵌入在方法中這一事實違反了DI / IOC的原理,因此很難測試..理想情況下,應該通過包含類的構造函數或方法本身將類注入到方法中。
從而
class A
{
IClassForExample _classForExample;
public A(IClassForExample classForExample)
{
_classForExample=classForExample;
}
public void ToBeTested()
{
var classForExample = _classForExample;
//Other logic.....
}
}
RhinoSupport是否擴展了非抽象/接口類-我不確定這個問題,但是我確定它可以模擬接口。
不,這是不可能的,出於同樣的原因,您不能期待static
東西:它不會在實例上調用。
如果要對測試代碼中內置的對象使用模擬,則應具有以下內容:
internal virtual ClassForExample NewClassForExempe()
{
return new ClassForExample();
}
然后在測試中模擬此方法。
注意:我假設您在類的InternalsVisibleToAttribute中聲明了犀牛模擬,因此將方法置於內部 。 否則,您必須將其公開。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.