我最近写了一些涉及Soap Web服务调用的代码。
以下示例代码完全正常。唯一的问题是我无法对代码进行单元测试,因为我使用'声明。我可以使用基于构造函数的依赖注入使用MS Unity依赖注入器。
问题是我是否会为此使用依赖注入器。使用'使用'的原因声明是我想在方法调用之后处理对象。
private ResultSet GetLookupMailingData()
{
try
{
using (var client = new NDataAccessSoapClient())
{
var result = client.GetLookupData(XMLLookupDataTypes.xldtMailings, "");
return Deserialize<ResultSet>(result);
}
}
catch (Exception)
{
return new ResultSet();
}
}
答案 0 :(得分:1)
您可以使用注入的工厂。因此,您可以模拟工厂返回模拟客户端并设置期望。例如:
interface INDataAccessSoapClientFactory
{
NDataAccessSoapClient CreateClient();
}
class Lookup
{
private INDataAccessSoapClientFactory factory;
public Lookup(INDataAccessSoapClientFactory factory)
{
this.factory = factory;
}
private ResultSetGetLookupMailingData()
{
try
{
using (var client = factory.CreateClient())
{
var result = client.GetLookupData(XMLLookupDataTypes.xldtMailings, "");
return Deserialize<ResultSet>(result);
}
}
catch (Exception)
{
return new ResultSet();
}
}
}