PHPUnit有测试数据库的方法,但是我如何测试HTTP服务,比如curl?
我的类方法获取一个URL并请求参数发送到服务器。它接收json格式的答案,并将此json发送给另一个方法进行解析并返回。
我想为这个类方法创建一个PHPUnit测试用例。我应该向服务器提供一个真实的url吗?服务器应该向这个测试用例返回成功/错误消息吗?
不要在类的某些方法中使用curl
连接,而是将curl
调用包装在它自己的类中,模拟它,并将其传递给您的类。
通过这种方式,您可以通过让模拟返回真正的json
来测试快乐路径,并且还可以模拟curl错误(使模拟的行为像真正的curl
库一样)。
同样适用于解析部分。如果你将解析代码移到它自己的类中,并将其注入到"main"类中,那么你就可以模拟它,并模拟解析错误。
对于单元测试,你不应该做真正的网络调用。