Rya*_*ell 5

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

$htmlResponse = $controller->buildPage($_REQUEST);
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样单元测试响应:

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

$this->assertEquals($expected, $actual);
Run Code Online (Sandbox Code Playgroud)

如果您的响应不是通过类似的函数调用生成的 - 如果您的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);
Run Code Online (Sandbox Code Playgroud)

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

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