WCF单元测试

     本示例使用的单元测试工具为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);
        }
    }

posted @ 2012-04-25 12:14    阅读(1848)  评论(0编辑  收藏  举报