当期望表单有效时,e2e 测试失败
e2e test fails when expecting form to be valid
我是 运行 一个 e2e 测试,它在我的一个组件上失败了,特别是在 expect 上。这样填写后我的表格应该有效。
这是测试:
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');
});
试试
fixture.detectChanges();
在 expect 调用之前。
你的测试的每一行都是一个异步调用,如果你试图在上一个调用结束之前断言结果,你可能会出错。
您可以利用量角器函数返回的承诺,而不是使用 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'));
这样您就可以在完成之前的所有操作后进行验证。
我是 运行 一个 e2e 测试,它在我的一个组件上失败了,特别是在 expect 上。这样填写后我的表格应该有效。
这是测试:
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');
});
试试
fixture.detectChanges();
在 expect 调用之前。
你的测试的每一行都是一个异步调用,如果你试图在上一个调用结束之前断言结果,你可能会出错。
您可以利用量角器函数返回的承诺,而不是使用 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'));
这样您就可以在完成之前的所有操作后进行验证。