本示例使用的单元测试工具为VS2010自带的单元测试工具,Mock工具为WCFMock:使用及下载地址为:http://wcfmock.codeplex.com/
WCFMock主要提供两个DLL,WCFMock和Moq,均可下载获得
WCF服务端:
需要引入:WCFMock.dll
在提供服务接口的类开头添加(用于mock WebOperationContext ):using WebOperationContext = System.ServiceModel.Web.MockedWebOperationContext;
测试项目:(更多使用方式可参考WCFMock项目)
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
string requestXml = "请求数据";
Mock<IWebOperationContext> mockContext = new Mock<IWebOperationContext> { DefaultValue = DefaultValue.Mock };
string ret = string.Empty;
using (new MockedWebOperationContext(mockContext.Object))
{
//调用服务器端接口方法
ReportService sampleService = new ReportService();
ParseUtil pu = new ParseUtil();
Stream s = sampleService.LoginPost(string.Empty, pu.StringToStream(loginXml));
ret = pu.StreamToString(s); //接口返回数据
}
//Mock返回类型,否则服务器端调用WebOperationContext.Current.OutgoingResponse.ContentType是回报null异常
mockContext.VerifySet(c => c.OutgoingResponse.ContentType, "text/xml");
string retXml = "预期的数据";
Assert.AreEqual(retXml, ret);
}
}