簡體   English   中英

無法使用Rhino Mocks使用具有數組參數的構造函數模擬類

[英]Cannot mock class with constructor having array parameter using Rhino Mocks

我們無法在RhinoMocks中模擬此類。

public class Service
{
    public Service(Command[] commands){}
}
public abstract class Command {}

// Code
var mock = MockRepository.GenerateMock<Service>(new Command[]{}); // or
mock = MockRepository.GenerateMock<Service>(null)

Rhino模擬無法抱怨找不到匹配參數的構造函數。 我究竟做錯了什么?

謝謝,

嘗試這樣:

var mock = MockRepository.GenerateMock<Service>(
    new object[] { new Command[0] }
);

此外,您可以使用接口包裝Service,而不必擔心構造函數參數。 如果構造函數發生變化-您的測試將與這些實現細節相關聯,並且需要進行更新。

var mock = MockRepository.GenerateMock<IService>();

編輯:至少隔離了該Mock的創建,因此,如果您在Service上的構造函數發生了變化,則不必在每個地方都進行更新。 常見做法如下:

(在您的測試課程中)

private ObjectWithServiceDependency CreateObjectUnderTest(){
     //Here you would inject your Service dependency with the above answer from Darin
     //i.e.
     var mockService= MockRepository.GenerateMock<Service>(new object[] {new Command[0] });
     var objectUnderTest = new ObjectWithServiceDependency(mockService);
     return objectUnderTest;
}

然后在測試中

[Test]
public TestSomething(){
     var out = CreateObjectUnderTest();
     //do testing
     mockService.Expect(...);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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