[英]Testing a WCF web service?
我想为WCF服务创建一个测试类。 我相信“嘲笑”是正确的用语吗?
我不确定我认为我必须这样做的方式是正确的方法。 我得到了一个WCF服务的URL,例如:
http:://somesite.com/wcf/RealService.svc
和:
http:://somesite.com/wcf/RealService.svc?wsdl
因此,我没有将RealService.svc
实际添加到我的项目作为Service Reference
而是简单地向我的项目Service1
添加了一个新的空WCF Service
。
然后我想使用wsdl.exe
(或者svcutil.exe?)工具从WSDL url生成一个接口: http:://somesite.com/wcf/RealService.svc?wsdl
。
然后我打开Service1.cs
文件而不是让它继承自IService1.cs
我让它从生成的interface
继承。
然后,我只需要调用我的Service1
类,而不是在我的应用程序中调用实际服务。 这是一个嘲弄网络服务的工作方式..?
还需要弄清楚如何使用svcutil工具实际生成一个interface
(我读过我不能将Wsdl.exe用于WCF服务?)。 所以任何提示都非常受欢迎!
要触及的许多区域都会尝试指向正确的方向:
如果要测试(即传递输入,验证输出)您的WCF服务,请使用Visual Studio GUI工具WCF Test Client
( 此处为 MSDN文章)。
如果你想模拟你的WCF服务(即单元测试你的组件消耗WCF服务),使用像NMock2
这样的模拟框架,它允许你模拟服务接口( 这里是相关的SO线程)。 如果你不想使用外部框架,你也可以手工编写一个模拟(通过实现接口) - 但这涉及更多。
如果要对WCF服务进行单元测试(即为服务,业务,数据等编写单元测试),请使用流行的模拟框架( 此处为相关的SO线程)。
要为您的WCF服务生成代理,请在猜测时使用svcutil.exe命令行实用程序( 此处为MSDN文章)。 此实用程序附带各种选项(语言,命名空间,配置文件等),因此请注意它们。
希望这可以帮助。
您可以使用svcutil.exe生成代理(来自Visula Studio: 添加服务引用... )。 这将生成您的客户端代理和服务接口 。
例如,您的服务http :: //somesite.com/wcf/RealService.svc?wsdl我们将获得:
您可以创建一个实现服务接口的模拟类(IRealService)。
在您的应用程序中,当您想要调用服务时,可以使用Factory或IOC容器而不是实例化具体服务客户端(RealServiceClient)。
通过这种方式,您可以确定应用程序(或模块/组件)使用的实例:运行时的实际服务,测试时的模拟。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.