2016-09-28 68 views
0

PHPUnit有methods来虚拟测试数据库,但是如何测试像curl这样的HTTP服务?为curl创建一个测试用例httprequest

我的类方法获取URL并请求参数发送到服务器。它以json的形式接收答案,并将此json发送给另一个方法进行解析并返回。

我想为这个类方法创建一个PHPUnit测试用例。我应该提供一个真正的网址到我的服务器?服务器应该返回一个成功/错误消息到这个测试用例吗?

+0

使用guzzle作为httpclient。有一个功能模拟电话 – Matteo

回答

1

而不是在你的班级的某些方法中使用curl连接,将curl调用包装在它自己的类中,模拟它,并将它传递给你的班级。

通过这种方式,您可以通过让模拟返回真实的json并模拟卷曲错误(使模拟行为与真正的curl库类似)来测试快乐路径。

同样适用于解析部分。如果您将解析代码移到它自己的类中,并将它注入到“main”类中,那么您将能够嘲笑它并模拟解析错误。

对于单元测试你永远不应该做真正的网络调用。

+0

感谢,至于你的第一段,你的意思是不要直接在测试用例中调用curl,而是将它作为一个单独的类并在测试用例中调用它?请通过一些示例代码澄清你的意思。 – user4271704