依赖注入是你的朋友在这里。
注意您将需要一个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
这里有一个设计问题....不应该依据每个方法来解决依赖关系。你应该使用基于构造函数的依赖注入。嘲笑依赖关系和单元测试会更容易。 –