【发布时间】:2015-07-23 08:10:04
【问题描述】:
我正在尝试通过使用NUnit 和fakeiteasy 的单元测试来覆盖我的业务逻辑。但我突然坚持使用 fakeiteasy 对 Soap 客户端进行伪造调用。我正在尝试做下一件事
var myFakedSoapClient = A.Fake<SomeSoapClient>();
var myCustomServiceWhichUsesThatSoapClient = new MyService(myFakedSoapClient);
myCustomServiceWhichUsesThatSoapClient.CallDoSomething();
myFakedSoapClient.CallsTo(e=>e.DoSomething(A<string>.Ignored)).MustHaveHappened();
但在我试图伪造 SoapClient 的第一行中,它只是卡住并开始消耗越来越多的内存。它没有显示任何异常,它只是运行该行直到超时。
我想念什么?
感谢任何预付款。
【问题讨论】:
-
什么是
SomeSoapClient?我对这门课不熟悉。 -
这是一个由wsdl自动生成的soapclient。
-
我不知道如何提供帮助。 FakeItEasy 可以伪造许多类(尽管我建议尽可能伪造接口——意外更少),因此如果不了解被伪造的类的更多信息,就无法重现问题,而且推理变得相当困难。
-
我很难相信
SoapClient与您的业务逻辑有任何关系。我会确保您将业务逻辑组件与集成组件隔离开来。调用 SOAP Web 服务的东西是一个集成组件,您可以对其应用适当的测试策略。事实上,如果你尽可能地将 SOAP 客户端的使用隔离到最薄的包装器中,那么对它进行单元测试就没有什么价值了,所以伪造 SoapClient 的需求就会消失。
标签: c# unit-testing tdd nunit fakeiteasy