小编典典

如何使Behat等待AJAX​​呼叫?

ajax

方案:修改并保存对广告系列的不完整更改

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完成,而不仅仅是让野兽入睡?

非常感谢您的任何反馈!


阅读 246

收藏
2020-07-26

共1个答案

小编典典

这是通过等待您未完成的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驱动程序(默认情况下不运行)。

2020-07-26