如何在WCF服务中模拟数据层?

时间:2011-12-13 15:10:55

标签: c# wcf nunit moq

我有一个WCF服务,在Windows服务下使用wshttpbinding托管。

public interface ICalculator
{
  public IDataLayer DataLayer {get;set;}

public List<string> GetResult()
{
  return DataLayer.Calculate();
}

我已在我的测试类库中托管了该服务并添加了服务引用。我想模拟数据层,以便我可以验证是否调用了Calculate方法。如何模拟DataLayer引用?

WCF的测试策略是什么?我应该首先托管服务并执行测试,还是应该首先测试服务DLL然后托管它?

我正在使用MOQ和NUnit。

由于

1 个答案:

答案 0 :(得分:3)

获得预设回复:

var mock = new Mock<IDataLayer>();
mock.Setup(d => d.Calculate()).Returns("what ever value you want to return");

确保调用它:

mock.Verify(d=> d.Calculate());

首先需要对WCF类进行单元测试以验证行为。实际上托管服务和使用代理客户端是集成测试。

因此,为服务创建一个NUnit TestFixture(我猜是计算器)。在NUnit中将其视为普通类,并执行所有测试,模拟DataLayer以获取预制结果并断言是否在调用时调用它。