方案:修改并保存对广告系列的不完整更改
Given I click on the Campaign section folder And I press Save in the selected Campaign Then I should see an error balloon informing the changes cannot be saved
关键是,最后一步中的“错误提示框”是一个ajax调用,它将根据操作成功而带来一个绿色或红色提示框。目前,我要做的是在“然后按保存…”之后,我将进行一次sleep(3),以使其有时间显示此气球。您浪费时间似乎不太明智,也因为在某些时候处理此调用可能花费更多或更少的时间。
你们如何让Behat测试等待Ajax完成,而不仅仅是让野兽入睡?
非常感谢您的任何反馈!
这是通过等待您未完成的ajax调用达到0来完成的。jQuery.active会为您进行检查。
在FeatureContext.php中,您可以执行以下操作;
public function iShouldSeeAnErrorBalloon($title) { $time = 5000; // time should be in milliseconds $this->getSession()->wait($time, '(0 === jQuery.active)'); // asserts below }
并确保您使用运行javascript和ajax的Mink驱动程序(默认情况下不运行)。