在 Symfony & Mink 中测试下拉列表





0/5 (0投票)
如何在 Symfony 和 Mink 中测试下拉列表
引言
我最近将 我的 mink_test 代码提交到了 github,目的是为人们提供一个良好且简单的示例,用于测试 Symfony 项目的 PHPUnit 测试用例。 如果你曾经尝试过在控制器中使用 Symfony 的 WebTestCase,它提供了一个无头浏览器,你会发现 Client API 并不提供点击下拉列表的功能。 这就是我撰写这篇文章的原因。
下拉列表
下拉列表在 HTML 中看起来很简单,就是一个 select
元素,请参见下面的截图
上面的截图来自我的 mink_test
代码,它显示了列表中可以选择的 4 个选项。 例如,如果你选择“Car
”,它会发起一个 AJAX 调用,并在页面上显示“You selected: BMW
”。
使用 Mink
你需要设置一个 Mink 环境来运行代码和测试。 我之前的文章 在 Symfony3 框架中使用 Mink 执行功能测试 提供了所有细节来完成此操作。 确保仔细阅读它。
验证 AJAX 是否正常工作
当你选择一个 AJAX 项目(下拉列表中的一个项目)后,将鼠标悬停在调试栏上时,你将看到 Symfony AJAX 符号 以及发出的
GET
请求。 请参见下面的截图
在上面的截图中可以看到,AJAX 调用正在 GET
请求 URL “http://mink_test/ajax?item=Car””,在最后选择“Car
”的情况下。
监控测试
一旦你在开发环境中启动了 selenium,在运行 PHPUnit 测试时,你始终会在后台看到打开的三个终端窗口,如以下截图所示
然后当你运行命令“phpunit tests/AppBundle/Functional/MinkTest.php”并且 Mink 功能测试运行时,你将看到一个 FireFox 浏览器打开并开始点击各种网页,如以下截图所示
上面的截图显示了函数“testAjax()
”正在运行,它从下拉列表中选择“City
”选项,并使用“minksession
->wait()
”函数等待最多 5 秒,直到页面上出现城市名称“Taft
”。 JavaScript Evaluation wait
函数的描述 在这里,当等待页面使用 AJAX 内容更改时,它很有用。
希望这能帮助任何尝试使用 Symfony 运行 Mink 测试的人!