我正在测试一个从 SOAP 服务收集数据的 Web 应用程序。但是 PHPUnit 默认不调用 SOAP 服务,而是鼓励您使用 Mock Objects。
但是我想使用这个 SOAP 服务测试应用程序。有没有办法强制 PHPUnit 这样做?
你可以简单地使用真实的对象和真实的数据——PHPUnit 应该很乐意允许它。
但是请记住,这完全违背了单元测试的目的。使用 SOAP 服务时,您依赖的 Web 流量和服务器响应完全不受您的控制。在这种不受控制的环境中,任何事情都可能发生,您的测试最终会失败。关键是您的测试是绝对确定性的:您应该知道输入数据,控制其处理过程并验证输出。如果你去掉数据处理控制,它就不再是单元测试了。
我强烈建议不要这样做。单元测试(确保软件稳定性的一个重要因素)永远不应依赖于 Web 服务的可用性。并且单元测试旨在快速运行,如果他们使用 SOAP 调用则不会。
如果您真的想确保 Web 服务的可用性,请实现某种检查可用性的独立服务。