当期望表格有效时,e2e测试失败

时间:2018-05-28 08:57:48

标签: angular validation e2e-testing

我正在运行 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');
   });

2 个答案:

答案 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(); 
在打电话之前