我有一个使用此方法的asmx webserice
[WebMethod]
double GetBookPrice(int bookID)
{
//instantiates a DiscountService,DeliveryService and a couple of other services
//uses various methods of these services to calculate the price
//e.g. DiscountService.CalculateDiscount(book)
}
有4种服务是此方法的依赖项。
现在如何测试此方法?我需要注入这些依赖项?或者我应该这样做?客户只是发送一个int来检查价格。
由于
答案 0 :(得分:5)
如果所有GetBookPrice
方法正在执行int
并将其传递给另一个方法,然后返回这些结果,我说测试服务方法具有可疑价值。它没有伤害来测试它,如果你想在GetBookPrice
方法中扩展功能,它可能有价值。
一般来说,如果你想测试你的服务,你可以通过构造函数注入和构造函数链来做标准的IOC:
public class FooWebService
{
private readonly ISomeDependency dependency;
public FooWebService(ISomeDependency dependency)
{
//this is what you call during your testing
this.dependency = dependency;
}
public FooWebService() : this(new ConcreteDependencyImplementation())
{
}
}
当您进行测试时,您会传入您的依赖项(或依赖项!)的实例。当您不进行测试时,将通过调用无参数构造函数自动创建和提供依赖项。