在Symfony框架中进行单元测试时,经常会遇到一些特殊的测试需求,比如测试AJAX功能。在本文中,将介绍如何使用PHPUnit和Mink来测试Symfony项目中的AJAX功能。
在HTML中,下拉列表通常是一个select元素。以下是一个示例截图,展示了一个包含四个选项的下拉列表。例如,如果选择“汽车”,它会触发一个AJAX调用,并在页面上显示“选择了:宝马”。
为了运行代码和测试,需要设置一个Mink环境。前一篇文章《在Symfony3框架中使用Mink进行功能测试》提供了所有必要的细节。请仔细阅读。
当在选择了AJAX项(下拉列表中的一个选项)后悬停在调试栏上,会看到Symfony的AJAX符号和发出的GET请求。以下是一个示例截图:
在上面的截图中,可以看到AJAX调用GET请求了URL "http://mink_test/ajax?item=Car";在这种情况下,“汽车”是最后被选择的。
一旦在开发环境中启动了selenium,应该会在PHPUnit测试运行时看到三个终端窗口在后台始终打开。
然后,当运行命令“phpunit tests/AppBundle/Functional/MinkTest.php”并且Mink功能测试运行时,会看到一个Firefox浏览器打开并开始点击各种网页。显示了正在运行的函数“testAjax()”,它从下拉列表中选择了“城市”选项,并使用“minksession->wait()”函数等待最多5秒钟,直到城市名称“塔夫特”出现在页面上。JavaScript评估wait函数在这里描述,对于AJAX非常有用,当等待页面用AJAX内容刷新时。