【发布时间】:2015-06-25 12:05:47
【问题描述】:
我对量角器和一般承诺相当陌生。我环顾四周,虽然有很多关于返回承诺的帖子,或者排队操作的结果对我来说没有多大意义,所以我在寻找一个相当容易描述的答案,我希望是一个简单的问题!
我正在尝试为我的 angularjs 网站编写一些量角器测试。
我主要使用 bootstrap 和 angular,没有其他第三方库,除了偶尔的 angular 插件,例如烤面包机和 bootstrap modal。
在进入测试的断言部分之前,我有几个“安排步骤”。比方说:
- a) 个人登录
- b) 人员访问选项表(可能会或可能会 取决于某些外部设备,尚未在屏幕上显示 因素,但如果它不存在,他们可以通过按下按钮打开它 )。
- c) 人员在选项表单上执行操作。
- d) 断言表单上的文本框现在包含正确的值。
当表单已经在屏幕上时,我可以很容易地让我的测试通过,但是让我卡住的一点是步骤 b),我需要先检查表单是否处于活动状态,如果不是,请单击按钮在进行步骤 c 之前。
我试图像这样从 isDisplayed 返回承诺:
//
// Is the user settings form active at the mo?
//
function _isUserSettingsFormActive()
{
var result = element(by.id(logoutFormID)).isDisplayed;
return result;
}
但如果我在 _isUserSettingsFormActive() 上调用 .then,我会收到以下错误:
[31mTypeError: undefined is not a function[0m
但是,如果我输出 _isUserSettinsFormActive() 的结果,我会看到以下内容,所以我知道它正在返回一些东西:
function () {
return self.elementArrayFinder_[fnName].
apply(self.elementArrayFinder_, arguments).toElementFinder_();
}
我要做的就是检查一个项目是否存在并在执行我的断言之前对其采取行动。
它需要在一个函数中,因为这段代码将在我的测试服中的许多地方使用。这不是“期望”本身,而是一个可能需要也可能不需要操作来设置浏览器以使我的测试通过的步骤。
【问题讨论】:
标签: angularjs promise protractor e2e-testing