phpunit - 假api响应或连接到服务的真实响应?

时间:2017-09-03 15:43:49

标签: php phpunit guzzle

我在服务类中创建了一些方法,使用API​​ POST请求通过Guzzle连接到外部服务/提供程序。

我喜欢使用phpunit进行测试 - 我应该使用假的HTTP Json响应而不连接服务,还是应该连接到服务以获得服务的真实响应?

2 个答案:

答案 0 :(得分:3)

测试的一个共同原则是“不要嘲笑你不拥有的东西”#34;。模拟这些API调用会使您的测试不太可靠,并且会给您一种虚假的安全感,因为您可能会得到误报

例如,当API意外地引入了重大更改时,您的测试将变为绿色,一旦您部署到生产环境,您将最终发现出现问题。这可能是您希望测试捕获的内容。

当您针对真实API进行测试时,您将获得可靠性。由于服务中断或超时,您的测试是否经常失败?如果是这样,您可以引入测试,例如重试机制,断路器或将API调用与应用程序的其余部分分离。

当您模拟API时,您可以告诉您的代码是根据服务的(可能过时的)规范行事。没关系,但不如依赖实际服务那么有用。

您可以使用组来分别运行这些测试。这样可以很容易地从剩余的测试中包含/排除这些可能很慢且有时不稳定的测试。这也有助于限制速率,例如只在关键分支上运行这些测试。

答案 1 :(得分:0)

您应该模拟外部API调用。您的测试旨在测试您的代码,而不是外部API。

注意:最终,如果您确实在测试中使用了外部API,则很可能会连接到该API的测试版本(不同于您的生产环境将连接到的实时版本的API),因此您不会确实可以确保API响应的一致性。

相关问题