Javascript 如何使EXPECT条件等待promise被解析(代码包装在方法中)?
当我尝试在测试体中使用下面的代码时,它似乎工作得很好,除了这个块之后(外部)的代码仍在执行,并且测试最终失败Javascript 如何使EXPECT条件等待promise被解析(代码包装在方法中)?,javascript,node.js,jasmine,protractor,Javascript,Node.js,Jasmine,Protractor,当我尝试在测试体中使用下面的代码时,它似乎工作得很好,除了这个块之后(外部)的代码仍在执行,并且测试最终失败 var el = element(by.model('name.first')); el.isDisplayed().then(function(condition) { console.log("Is Element Displayed : " + condition); if(!condition) { fail('Te
var el = element(by.model('name.first'));
el.isDisplayed().then(function(condition) {
console.log("Is Element Displayed : " + condition);
if(!condition) {
fail('Test Failed');
}
});
但是,当我将此代码包装到一个方法(在其他一些util文件中)中时,如下所示:
然后尝试在我的测试中调用此方法,如:
expect(elementActions.isMyElementDisplayed(element(by.model('name.first')))).toBe(true);
它失败了,但出现以下异常
预期未定义为true。
但是,我看到日志中打印的消息:
是否显示元素:false
而且,在这种情况下,测试也不会在“expect”条件下停止,而是在最后失败。可以看出,我对量角器和javascript是新手。我正在尝试自动化QA功能测试,并构建一些可重用的方法,这些方法可以再次使用,也可以被其他人使用
仅供参考:npm-版本->2.14.7和量角器-版本->3.0.0@Artyom指出的是将
返回
放入isMyElementDisplayed
功能:
isMyElementDisplayed: function (element) {
var el = element;
// v HERE
return el.isDisplayed().then(function(condition) {
console.log("Is Element Displayed : " + condition);
return condition;
});
}
这样,isMylementDisplayed
函数将返回一个承诺,该承诺将放在控制流上,expect
将在断言之前隐式地解析它
不过,我会使用等待来处理问题:
var EC = protractor.ExpectedConditions;
var elm = element(by.model('name.first'));
browser.wait(EC.visibilityOf(elm), 5000, "Element is still not visible");
expect(elm.isDisplayed()).toBe(true);
您需要从
isMyElementDisplayed
first@ArtyomNeustroev在这种情况下,你能指导怎么做吗。那真的很有帮助。您也可以将其作为答案发布,如果这解决了我的问题,我将接受。我不确定,这是唯一的问题,因此我无法将其作为答案发布,但现在有一个:)
var EC = protractor.ExpectedConditions;
var elm = element(by.model('name.first'));
browser.wait(EC.visibilityOf(elm), 5000, "Element is still not visible");
expect(elm.isDisplayed()).toBe(true);