如何将依赖项注入asmx webservice webmethod

本文关键字:asmx webservice webmethod 注入 依赖 | 更新日期: 2023-09-27 18:07:37

我有一个带有这个方法的asmx webservice

[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来检查价格。

谢谢

如何将依赖项注入asmx webservice webmethod

如果所有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())
    {
    }
}

当你在测试时,你传入一个依赖项(或多个依赖项!)的实例。当您不进行测试时,依赖项将自动创建并通过调用无参数构造函数的方式提供。