我开始使用TDD了,我想知道添加服务引用以测试我的项目是不是一种不好的做法,或者我只是在依赖于WCF服务的测试中模拟虚假服务。
答案 0 :(得分:2)
是的,向单元测试项目添加服务引用是一种不好的做法。您可以使用生成的服务契约接口来模拟测试中的真实WCF服务行为。
答案 1 :(得分:1)
拥有服务参考可能是一个糟糕的方法,您可以考虑实施网关模式,例如IMyFooServiceGateway作为额外的抽象层。通过这种方式,您可以使应用程序更松散地耦合并获得一些额外的可测试性(在您的测试项目中,您将引用包含IMyFooServiceGateway的隔离程序集,并手动创建实现IMyFooServiceGateway的模拟或使用像Rhino Mocks这样的模拟框架为你创造一个。
答案 2 :(得分:0)
您可以使用服务合同模拟出ChannelFactory,而不是使用服务引用。
答案 3 :(得分:0)
如果作为测试目标的项目具有服务引用,则不必向测试项目添加其他服务引用。
将服务引用添加到项目时,通常为其生成的代码包含服务的可公开访问的接口。因此,测试项目只需要引用目标项目,以便查看此接口,然后可以将其放入您选择的模拟库中或手动模拟。
值得注意的是,生成的接口不一定遵循接口的典型“IFoo”命名约定,因此不会立即明显。