我对量角器和一般承诺相当陌生。我环顾四周,虽然有很多关于返回承诺的帖子,或者排队操作的结果对我来说没有多大意义,所以我在寻找一个相当容易描述的答案,我希望是一个简单的问题!
我正在尝试为我的 angularjs 网站编写一些量角器测试。
我主要使用引导程序和角度,没有其他第三方库,除了偶尔的角度插件,如烤面包机和引导模式。
在进入测试的断言部分之前,我有几个“安排步骤”。比方说:
- a) 个人登录
- b)人员访问选项表单(根据某些外部因素,它可能已经或可能不会显示在屏幕上,但如果它不存在,他们可以通过按下按钮打开它)。
- c) Person 在选项表单上执行操作。
- 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_();
}
我要做的就是检查一个项目是否存在并在执行我的断言之前对其采取行动。
它需要在一个函数中,因为此代码将在我的测试套件中的许多地方使用。这不是“期望”本身,而是一个可能需要也可能不需要操作来设置浏览器以使我的测试通过的步骤。