2012-09-16 150 views
8

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

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

UPDATE

我打电话通过卷曲这些服务,我一定能查的状态码。对于不同的输入,响应可能会有所不同,所以我应该检查所有可能的响应?

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

回答

4

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

如果您的API无法针对处于可预测状态的数据层运行(例如,如果它连接到实时数据或与开发人员共享的数据),那么您最终会花费很多的时间修复你的测试,以正确模拟新的数据状态。这使得单元测试的价值较低,因为您可能无法经常运行它们,并且因为您从未确定测试失败是由于数据更改还是程序逻辑更改所致。是否超过未进行单元测试的风险将取决于您的个人情况(测试中断的频率,服务的重要程度,& ct)。至于如何使用PHPUnit来运行测试用例,我不能回答这个问题,但我想你会像@basiljames所说的那样去做;针对给定端点执行呼叫并验证收到的响应是否与您的预期正确匹配。这与其他单元测试没有什么不同,除了它们可能运行速度稍慢一些。

2

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