【发布时间】:2020-04-02 06:57:44
【问题描述】:
在为 Angular 应用程序进行测试自动化时,我遇到了一个问题,即每当我尝试使用 Angular 命令ng e2e 运行测试套件时,所有测试都会失败。量角器命令protractor conf.js 通过了相同的测试。我想问一下这种奇怪行为的原因。提供了规范。
谢谢
import { AddMemberClass } from '../../pages/add-member/add-member.page';
import { LoginPage } from '../../pages/login/login.page';
import { browser, promise, by } from 'protractor';
fdescribe('Add Member as Admin',()=>{
let addMemeber: AddMemberClass;
let login : LoginPage;
beforeAll(()=>{
login = new LoginPage();
addMemeber = new AddMemberClass();
return new Promise((resolve)=>{
login.navigateTo().then(()=>{
login.getEmailInput().sendKeys('something@gmail.com');
login.getPasswordInput().sendKeys('13235');
login.getLoginButton().click().then(()=>{
setTimeout(()=>{
expect(browser.getCurrentUrl()).toContain('organization').then(()=>{
resolve();
});
},30000);
});
});
});
});
it('should login successfully', ()=>{
return addMemeber.getMemberMenu().click().then(()=>{
console.log('test1');
return addMemeber.getAddMemberSubMenu().click().then(()=>{
console.log('inside test 1');
return new Promise((resolve)=>{
setTimeout(()=>{
expect(browser.getCurrentUrl()).toContain('directregistration').then(()=>{
resolve();
});
},30000)
})
})
})
});
it('should check member Menu on main page',()=>{
return new Promise((resolve,reject)=>{
setTimeout(()=>{
console.log('Inside test 2 timeout');
expect(addMemeber.getMemberMenu().isPresent()).toBe(true);
resolve();
},5000)
});
});
})
});
【问题讨论】:
-
如果您向我们提供准确的错误信息,那就太好了
-
问题是你的 setTimeout 和 Promises。这不是应该做的:)
-
@LuninRoman 错误是 jasmine.DEFAULT_TIMEOUT
-
@PierreDuc 你能解释一下吗?将不胜感激
-
@Analyst 我建议你看看angular.io/guide/testing。你应该使用
async。您收到错误是因为默认超时远小于您希望测试等待的 30 秒。
标签: angular testing automation jasmine e2e-testing