如何使用 phpunit 测试用例测试 ajax 调用?
最佳答案
根据您的 ajax 响应是如何生成的,这可能很容易也可能更困难。如果您使用 Controller 生成响应,您可以简单地调用单元测试中的适当函数并检查返回的 HTML/XML。例如,如果响应是通过调用 Controller 对象上的函数生成的,如下所示:
$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 测试来完成。
关于php - 如何使用 phpunit 测试用例测试 ajax 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5163963/