虽然您不需要框架,但测试框架仍应使用 Mock 对象,然后您应该让代码相应地处理函数。例如,您的库需要对 404 错误做一些事情。不要测试 HTML 错误代码是否为 404,而是测试您的库是否正确运行。
class YourHTTPClass
{
private $HttpResponseCode;
public function getPage($URL, $Method)
{
// Do some code to get the page, set the error etc.
}
public function getHttpResponseCode()
{
return $this->HttpResponseCode;
}
...
}
PHP单元测试:
class YourHTTPClass_Test extends \PHPUnit_Framework_TestCase
{
public function testHTMLError404()
{
// Create a stub for the YourHTTPClass.
$stub = $this->getMock('YourHTTPClass');
// Configure the stub.
$stub->expects($this->any())
->method('getHttpResponseCode')
->will($this->returnValue(404));
// Calling $stub->getHttpResponseCode() will now return 404
$this->assertEquals(404, $stub->getHttpResponseCode('http://Bad_Url.com', 'GET'));
// Actual URL does not matter as external call will not be done with the mock
}
public function testHTMLError505()
{
// Create a stub for the YourHTTPClass.
$stub = $this->getMock('YourHTTPClass');
// Configure the stub.
$stub->expects($this->any())
->method('getHttpResponseCode')
->will($this->returnValue(505));
// Calling $stub->getHttpResponseCode() will now return 505
$this->assertEquals(505, $stub->getHttpResponseCode('http://Bad_Url.com',
}
通过这种方式,您已经测试了您的代码将处理各种返回码。使用模拟对象,您可以定义多个访问选项,或使用数据提供者等...生成不同的错误代码。
您将知道您的代码将能够处理任何错误,而无需转到外部 Web 服务来验证错误。
要测试获取数据的代码,您将执行类似的操作,实际模拟 GET 函数以返回已知信息,这样您就可以测试获取结果的代码。