PHPUnit有methods来虚拟测试数据库,但是如何测试像curl这样的HTTP服务?为curl创建一个测试用例httprequest
我的类方法获取URL并请求参数发送到服务器。它以json的形式接收答案,并将此json发送给另一个方法进行解析并返回。
我想为这个类方法创建一个PHPUnit测试用例。我应该提供一个真正的网址到我的服务器?服务器应该返回一个成功/错误消息到这个测试用例吗?
PHPUnit有methods来虚拟测试数据库,但是如何测试像curl这样的HTTP服务?为curl创建一个测试用例httprequest
我的类方法获取URL并请求参数发送到服务器。它以json的形式接收答案,并将此json发送给另一个方法进行解析并返回。
我想为这个类方法创建一个PHPUnit测试用例。我应该提供一个真正的网址到我的服务器?服务器应该返回一个成功/错误消息到这个测试用例吗?
而不是在你的班级的某些方法中使用curl
连接,将curl
调用包装在它自己的类中,模拟它,并将它传递给你的班级。
通过这种方式,您可以通过让模拟返回真实的json
并模拟卷曲错误(使模拟行为与真正的curl
库类似)来测试快乐路径。
同样适用于解析部分。如果您将解析代码移到它自己的类中,并将它注入到“main”类中,那么您将能够嘲笑它并模拟解析错误。
对于单元测试你永远不应该做真正的网络调用。
感谢,至于你的第一段,你的意思是不要直接在测试用例中调用curl,而是将它作为一个单独的类并在测试用例中调用它?请通过一些示例代码澄清你的意思。 – user4271704
使用guzzle作为httpclient。有一个功能模拟电话 – Matteo