Javascript 编写量角器场景的方法
假设angular应用程序包含两个页面:contacts(包含带有联系人列表和“添加新联系人”按钮的表格)和new contact page(带有用于添加新联系人的表单)。我想写一个场景:Javascript 编写量角器场景的方法,javascript,testing,protractor,end-to-end,Javascript,Testing,Protractor,End To End,假设angular应用程序包含两个页面:contacts(包含带有联系人列表和“添加新联系人”按钮的表格)和new contact page(带有用于添加新联系人的表单)。我想写一个场景: 单击添加按钮 检查“新联系人”页面是否打开 输入联系人数据 按添加按钮 检查表中是否有新触点 对于这些页面,我有一些页面对象,这些页面对象具有“单击某些按钮”、“输入某些字段”等函数,所有函数都返回 编写测试场景的最佳方法是什么:使用类似js的链接 contactPage.clickAddButton() .
contactPage.clickAddButton()
.then(function () {
return newContactPage.checkUrl();
})
.then(function () {
return newContactPage.inputData(data);
})
.then(function () {
return newContactPage.clickAddButton();
})
.then(function () {
return checkContact(data);
})
.then(function (succes) {
}, function (error) {
console.error(error);
});
或者我可以这样写:
contactPage.clickAddButton();
newContactPage.checkUrl();
newContactPage.inputData(data);
newContactPage.clickAddButton();
checkContact(data);
将场景拆分为多个“it”功能有意义吗?无需明确解决承诺。量角器有一个简单的接口,可以很自然地处理承诺队列。由于这是一个单独的场景,您可以将其放在一个
it()
中,除非您不重复:
contactPage.clickAddButton();
newContactPage.checkUrl();
newContactPage.inputData(data);
newContactPage.clickAddButton();
checkContact(data);
如果粘在量角器上,你应该按要求处理 但如果你想保持承诺链的明确性(远离量角器,与应用程序编码格式保持一致,等等),那么可以这样重写:
contactPage.clickAddButton()
.then(newContactPage.checkUrl) // Must resolve `data` for next function
.then(newContactPage.inputData)
.then(newContactPage.clickAddButton) // Must resolve `data` for next function
.then(checkContact)
.then(function (success) {
// Test passes...
}, function (error) {
console.error(error);
});
但如果您使用的是量角器,那么将其编写为.好的,但是如果我想使用从函数解析的值,例如var getData=function(){var def=Q.defer();var data;…if(data){def.resolve(data);}else{def.reject(新错误),如何编写场景呢('Data not found!');}返回def.promise;};在场景中如何获取数据?@qweasd是的,如果您需要函数调用的解析结果-您需要
then()
。很好,谢谢。