我现在需要为使用 CakePHP 1.3 编写的 REST API 编写单元测试。该 API 支持 GET、POST 和 PUT 请求来查询和操作数据。
是否有任何既定方法可以使用装置来测试模拟 HTTP 请求的 API 的正确输入/输出?我不想对实时(开发)数据库运行实际的 POST/PUT 请求。如何最好地模拟系统以使用临时模型,同时按原样测试堆栈的其余部分?
<小时 />使用 controller tests 测试 GET 请求非常简单。然而,对于数据操作,API 相当广泛地使用 HTTP header ,并且还解析原始 XML 和 JSON POST/PUT 数据。 Controller 单元测试方法仅通过在 Controller 中设置 $this->data
来模拟 POST 数据,这不允许我正确测试 API。
请您参考如下方法:
您应该创建 Mocks 或使用隔离框架来模拟 API 环境。单元测试不应依赖于互联网连接、网络、端点等资源。
如果您打算测试真实的 API 调用,您应该创建集成测试项目并将其用于此目的。但请注意,集成测试大多不可重复,并且每次运行都会给出不同的结果。