我正在运行 e2e测试,但我的某个组件失败,特别是期望。填写后,我的表格应有效。
这是测试:
it("1: Should create a new sitter", async () => {
browser.get('/register-sitter');
// Do something
element(by.id('firstname')).sendKeys('Susan');
element(by.id('lastname')).sendKeys('Winston');
element(by.id('birthdate')).sendKeys('4/18/2018');
element(by.id('gender')).all(by.tagName('mat-radio-button')).get(0).click();
element.all(by.css('mat-select')).each(function (eachElement) {
eachElement.click(); //select the select
browser.driver.sleep(500); //wait for the renderings to take effect
element(by.css('mat-option')).click(); //select the first mat-option
browser.driver.sleep(500); //wait for the renderings to take effect
});
element(by.id('username')).sendKeys('s.w@com');
element(by.id('password')).sendKeys('susu123W');
element(by.id('register')).click();
element(by.css('form')).submit();
// Expect something
expect(element(by.css('form')).getAttribute('class')).toContain('ng-valid');
});
答案 0 :(得分:1)
您的测试的每一行都是异步调用,如果您尝试在上一次调用结束之前断言结果,则可能会出错。
您可以利用量角器函数返回的promise并同步应该同步的内容,而不是使用browser.driver.sleep
。
例如这段代码:
element(by.id('firstname')).sendKeys('Susan');
element(by.id('lastname')).sendKeys('Winston');
将替换为:
element(by.id('firstname')).sendKeys('Susan')
.then(() => element(by.id('lastname')).sendKeys('Winston'));
这样,您可以在完成所有先前的操作后进行验证。
答案 1 :(得分:0)
尝试
fixture.detectChanges();
在打电话之前。