嘲諷一個具體的類時,調用與接口參數的構造函數我有以下的類,它使用構造器注入:如何使用起訂量
public class Service : IService
{
public Service(IRepository repository, IProvider provider) { ... }
}
對於這個類的大多數方法,我簡單地創建起訂量嘲笑爲IRepository
和IProvider
並構建Service
。但是,類中有一個方法可以在同一個類中調用其他幾個方法。爲了測試這種方法,我不想一起測試所有這些方法,而是想測試該方法是否正確調用這些方法並正確處理其返回值。
最好的辦法是模擬Service
。我之前用Moq嘲笑過具體的課,沒有問題。我甚至嘲笑了具有Moq構造參數的具體類沒有問題。不過,這是我第一次需要將嘲諷參數傳遞給模擬對象的構造函數。當然,我試圖這樣做:
var repository = new Mock<IRepository>();
var provider = new Mock<IProvider>();
var service = new Mock<Service>(repository.Object, provider.Object);
但是,這是行不通的。相反,我得到以下錯誤:
Castle.DynamicProxy.InvalidProxyConstructorArgumentsException : Can not instantiate proxy of class: My.Namespace.Service.
Could not find a constructor that would match given arguments:
Castle.Proxies.IRepository
Castle.Proxies.IProvider
此工作正常,如果Service
的構造函數只接受簡單的參數,像int
S和string
S,但如果需要我不能說我嘲笑接口。你怎麼做到這一點?
您使用哪個Moq和城堡版本?因爲你的示例代碼工作正常使用Moq 4.2.1312.1622和Castle.Core 3.2.2 ... – nemesv