使用PHPUnit测试REST API

Har*_*sha 8 php rest phpunit

我正在构建一组RESTful API,现在需要为它们编写单元测试.我不确定单元测试应该实际测试什么.

单元测试是否应检查从服务器接收的响应是否适用于各种输入?如果是这样,预先定义一组正确的响应格式并检查针对它们的响应是否是一种好习惯?

UPDATE

我通过CURL调用这些服务,我绝对可以检查状态代码.对于不同的输入,响应可能会有所不同,因此我应该检查所有可能的响应吗?

通常如何使用PHPUnit对RESTful API进行单元测试?

cor*_*ori 4

如果您的 API 的数据层被充分抽象,以便您可以针对给定输入接收一致且可预测的输出,那么您的测试用例绝对应该包括一些有限输入列表的常见输出期望。它们还应该测试您可以鼓动的任何错误情况向上。

如果您的 API 无法针对处于可预测状态的数据层运行(例如,如果它连接到实时数据或开发人员之间共享的数据),那么您最终将花费大量时间来修复您的 API测试以正确建模数据的新状态。这使得单元测试的价值降低,因为您可能不会经常运行单元测试,并且您永远无法确定测试失败是由于数据更改还是程序逻辑更改所致。这是否超过不进行单元测试的风险将取决于您的个人情况(测试失败的频率、服务的重要性等等)。

至于如何使用 PHPUnit 运行测试用例,我无法具体回答,但我想您会按照 @basiljames 指出的那样做;对给定端点执行调用并验证收到的响应是否正确符合您的期望。与任何其他单元测试没有什么不同,除了它们可能运行得慢一些。