簡體   English   中英

Rhino Mock使用對“新”方法調用的期望

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM