8

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

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

更新

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

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

4

2 回答 2

4

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

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

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

于 2012-09-17T05:09:32.340 回答
2

您可以将 JUnit 用于您的测试用例。您必须检查HTTP Status Code任何特定属性或值的响应内容,然后再检查。

于 2012-09-16T12:57:47.127 回答