如何使用phpunit测试用例测试ajax调用?

时间:2011-03-02 06:00:02

标签: php ajax unit-testing automated-tests

如何使用phpunit测试用例测试ajax调用?

1 个答案:

答案 0 :(得分:5)

根据您的ajax响应的生成方式,这可能很容易或更困难。如果使用控制器生成响应,则只需在单元测试中调用相应的函数并检查返回的HTML / XML。例如,如果通过调用控制器对象上的函数生成响应,如下所示:

$htmlResponse = $controller->buildPage($_REQUEST);

然后您可以像这样对单元进行单元测试:

$expected = "<html>whatever html you expect</html>";
$test_request = array(...); // parameters to test
$actual = $controller->buildPage($test_request);

$this->assertEquals($expected, $actual);

如果您的响应不是通过类似的函数调用生成的 - 如果您的AJAX请求是针对包含某些动态内容的实际页面,那么您似乎可以执行以下操作:

$_POST['parameter1'] = "test value";  // stuff whichever request object you're using
                                      // with the values you need
ob_start();
include('ajax_page.php');
$actual = ob_get_clean();
$expected = "<html>expected html as above</html>";

$this->assertEquals($expected, $actual);

PHPUnit还提供assertTag断言用于测试生成的HTML和XML包含您期望的标记 - 它可能有点挑剔,但它比回显响应和比较字符串更强大。

最终,你想要知道的是,给定一定的输入(请求参数),你得到你期望的输出(返回的HTML或XML)。这是一个AJAX调用的事实并没有从根本上改变这个等式。如果你想测试AJAX请求是否正确,那么你需要在客户端进行JS测试。