依賴注入是你的朋友在這裏。
注意您將需要一個IOC容器,例如Autofac,Unity,StructureMap等......與您的應用程序進行連接。
注入你的依賴在類的構造函數:
public class CustomerService
{
private ICortexBusinessManager _cortexBusinessManager;
public CustomerService (ICortexBusinessManager cortexBusinessManager)
{
_cortexBusinessManager = cortexBusinessManager;
}
public List<CustomerViewModel> GetResellerCustomersWithProperties(string shortCode)
{
return _cortexBusinessManager.GetResellerCustomersWithProperties(shortCode);
}
}
然後,您可以使用您的單元測試中的模擬框架來嘲笑你的接口調用。下面
實施例使用Moq
public class CustomerServiceTest
{
[Test]
public void GetResellerCustomersWithProperties_ReturnsFromCortextBusinessManager()
{
//arrange
var mockCortexBusinessManager = new Mock<ICortexBusinessManager>();
//if GetResellerCustomersWithProperties is called with s123, return a new list of CustomerViewModel
//with one item in, with id of 1
mockCortexBusinessManager.Setup(m=> m.GetResellerCustomersWithProperties("s123"))
.Returns(new List<CustomerViewModel>(){new CustomerViewModel{Id = 1}});
var customerService = new CustomerService(mockCortexBusinessManager.Object);
//act
var result = customerService.GetResellerCustomersWithProperties("s123");
//assert
Assert.AreEqual(1, result.Count())
Assert.AreEqual(1, result.FirstOrDefault().Id)
}
}
[嘲笑他們](http://stackoverflow.com/questions/5627371/how-do-you-use-moq-to-mock-a-simple-interface )< - (可點擊)。 – Szer
這裏有一個設計問題....不應該依據每個方法來解決依賴關係。你應該使用基於構造函數的依賴注入。嘲笑依賴關係和單元測試會更容易。 –