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

标签 php ajax unit-testing automated-tests

如何使用 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/

相关文章:

php - 将两行python代码转换为PHP

Php确认框

javascript - 我想在提交表单后显示警报,PHP,JAVASCRIPT,HTML,AJAX

c# - 如何在 AspNetCore.Authentication.Abstractions 上模拟 AuthenticateAsync

c# - Rhino Mocks AAA 语法和线程安全

php - 如何从 Composer 安装 CakePHP 插件到 app/Plugin

php - 将 SQL 语句转换为 Joomla 格式时遇到问题

xml - XMLHttpRequest的Open方法

javascript - Angular UI-Router 动态路由基于来自 API Ajax 调用的 slug。基于 slug 加载 View

javascript - 开 Jest 测试一下解析拒绝回调