我正在使用Behat / Mink和Selenium进行验收测试。我需要确定我的网页是否通过Ajax对服务器进行了错误的调用。问题是,服务器将尝试“纠正”格式错误的代码并返回有效数据。
有没有办法“拦截”并验证从我的网站发出的ajax调用?
现在我的FeatureContext类看起来像:
public function performAnAction()
{
$this->enterInField('test', 'field');
$this->hitOKButton();
$this->assertResponseContains('success');
}
我想做点什么:
public function performAnAction()
{
$this->enterInField('test', 'field');
$this->hitOKButton();
$ajax = $this->getAllAjaxCalls();
foreach ($ajax as $call) {
// perform some validation
}
$this->assertResponseContains('success');
}
答案 0 :(得分:1)
以下是对ajax调用进行检查的两个很好的资源
behat mink方式
http://docs.behat.org/cookbook/behat_and_mink.html#defining-our-own-featurecontext
这是一个简洁的解决方案,使用_before和_after覆盖来深入了解基本功能并且非常有趣,但阅读它将有助于您更好地理解框架在幕后的实际操作
http://blog.scur.pl/2012/06/ajax-callback-support-behat-mink/
我认为你可以简单地使用带有js回调的内置等待函数,通过将你的响应放到任何html元素上的jquery data []对象中来获得你想要的自定义步骤def,并验证你的预期输出
$this->getSession()->wait(5000,
"$('.someCssClassSelectorToElementWithResponseStuff').length > 0"
);
如果你的元素是一个可以工作的js对象 或者,如果它作为jquery对象返回,则可以使用.size()而不是length 只需确保你注入的js评估为true为false以获得通过/失败