我正在构建一组RESTful API,现在需要为它们编写单元测试。我不确定单元测试应该实际测试什么。
单元测试是否应检查从服务器接收的响应是否适用于各种输入?如果是这样,预先定义一组正确的响应格式并检查针对它们的响应是否是一种好习惯?
更新
我通过CURL调用这些服务,我绝对可以检查状态代码。对于不同的输入,响应可能会有所不同,因此我应该检查所有可能的响应吗?
如何通常使用PHPUnit对RESTful API进行单元测试?
答案 0 :(得分:4)
如果您的API的数据层被充分抽象化,以便您可以为给定的输入接收一致且可预测的输出,那么您的测试用例肯定应该包含对某些有限输入列表的一些常见输出预期。它们还应测试任何错误情况你可以鼓起来。
如果您的API无法针对处于可预测状态的数据层运行(例如,如果它连接到实时数据,或者连接到开发人员之间共享的数据),那么您最终会花费很多修复测试以正确建模数据的新状态的时间。这使得单元测试的价值降低,因为您可能不会经常运行它们,并且因为您无法确定测试失败是由于数据的更改还是程序逻辑的更改。这是否超过未进行单元测试的风险将取决于您的个人情况(测试中断的次数,服务的重要性,以及等等)。
至于如何使用PHPUnit来运行测试用例,我无法回答具体问题,但我想你会像@basiljames那样注意到;对给定端点执行调用,并验证收到的响应是否符合您的期望。与其他任何单元测试没有什么不同,除了它们运行速度稍慢的事实。
答案 1 :(得分:2)
您可以将JUnit用于测试用例。您必须检查HTTP Status Code
以及之后的任何特定属性或值的响应内容。