65.9K
CodeProject 正在变化。 阅读更多。
Home

在 Symfony & Mink 中测试下拉列表

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2017 年 9 月 29 日

CPOL

2分钟阅读

viewsIcon

6127

如何在 Symfony 和 Mink 中测试下拉列表

引言

我最近将 我的 mink_test 代码提交到了 github,目的是为人们提供一个良好且简单的示例,用于测试 Symfony 项目的 PHPUnit 测试用例。 如果你曾经尝试过在控制器中使用 Symfony 的 WebTestCase,它提供了一个无头浏览器,你会发现 Client API 并不提供点击下拉列表的功能。 这就是我撰写这篇文章的原因。

下拉列表

下拉列表在 HTML 中看起来很简单,就是一个 select 元素,请参见下面的截图

Dropdown List

上面的截图来自我的 mink_test 代码,它显示了列表中可以选择的 4 个选项。 例如,如果你选择“Car”,它会发起一个 AJAX 调用,并在页面上显示“You selected: BMW”。

使用 Mink

你需要设置一个 Mink 环境来运行代码和测试。 我之前的文章 在 Symfony3 框架中使用 Mink 执行功能测试 提供了所有细节来完成此操作。 确保仔细阅读它。

验证 AJAX 是否正常工作

当你选择一个 AJAX 项目(下拉列表中的一个项目)后,将鼠标悬停在调试栏上时,你将看到 Symfony AJAX 符号 Symfony AJAX Icon 以及发出的 GET 请求。 请参见下面的截图

AJAX Car Selected

在上面的截图中可以看到,AJAX 调用正在 GET 请求 URL “http://mink_test/ajax?item=Car&#8221”,在最后选择“Car”的情况下。

监控测试

一旦你在开发环境中启动了 selenium,在运行 PHPUnit 测试时,你始终会在后台看到打开的三个终端窗口,如以下截图所示

Mink Setup

然后当你运行命令“phpunit tests/AppBundle/Functional/MinkTest.php”并且 Mink 功能测试运行时,你将看到一个 FireFox 浏览器打开并开始点击各种网页,如以下截图所示

Tests Running

上面的截图显示了函数“testAjax()”正在运行,它从下拉列表中选择“City”选项,并使用“minksession->wait()”函数等待最多 5 秒,直到页面上出现城市名称“Taft”。 JavaScript Evaluation wait 函数的描述 在这里,当等待页面使用 AJAX 内容更改时,它很有用。

希望这能帮助任何尝试使用 Symfony 运行 Mink 测试的人!

标签:AJAX, Mink, phpunit, Symfony, Testing

© . All rights reserved.