2016-12-16 3 views
0

В настоящее время я учился писать тесты с использованием транспортира, и я застрял и не мог понять, как правильно написать простой тест входа/выхода из системы.Передатчик/угловой 2 управляющий поток

describe('Login with dummy user', function() { 
    browser.ignoreSynchronization = true; 
    browser.get('https://localhost:44311'); 
    element(by.id('userNameInput')).sendKeys('blabla'); 
    element(by.id('passwordInput')).sendKeys('blablapassword'); 
    element(by.id('submitButton')).click(); 
    browser.ignoreSynchronization = false; 
    browser.sleep(2000); 

    it('page should have Inventory title', function() { 
     expect(browser.getTitle()).toEqual('Inventory'); 
    }); 

    it(' page should have logout button', function() { 
     var completedAmount = element.all(by.css('.logoutButton')); 
     expect(completedAmount.count()).toEqual(1); 
    }); 

    describe('clicking loging out button', function() { 
     browser.sleep(2000); 
     element(by.css('[href="/account/signout"]')).click(); 

     it('should redirect to account page', function() { 
      expect(browser.getCurrentUrl()).toEqual('https://localhost:44311/account'); 
     }); 

     it('should display a signed out message', function() { 
      expect(element(by.css('text-success')).getText()).toEqual('You have successfully signed out'); 
     }); 
    }); 
}); 

Я ожидаю, что первые два она будет работать до второго описания, но браузер нажимает на кнопку выхода из системы, браузер закрывается и только после этого делать тесты запуска и потерпеть неудачу.

+1

Храните код отношение к ' он внутри вашего 'it'. Вы не можете хранить что-либо за пределами 'it' блоков, поэтому перемещайте элемент (by.id ('userNameInput')). SendKeys ('blabla');' и другие для вашего 'it' – FCin

+0

Но тогда как я могу проверить 2 вещи? Или я вынужден иметь несколько ожиданий в 1, вместо того, чтобы иметь его несколько? –

+0

Вы можете выполнять функции и сохранять повторяющийся код внутри функции, но каждый 'it' должен проверять, что он имеет в своем описании. Если вам нужно сделать пару ожиданий, вы можете. – FCin

ответ

1

Я хотел бы предложить, чтобы держать весь код внутри «это» блоки и сохранить функциональность Выйти Логин & внутри «beforeAll» и «Afterall» функции, соответственно, как показано ниже:

describe('Login with dummy user', function() { 
    beforeAll(function() { 
    // Login Steps 
    // ignore synchronization set to true should have nested then statements 
    // since the synchronization is removed. Example: 
    // 
    // element(by.id('userNameInput')).sendKeys('blabla').then(() => { 
    // element(by.id('passwordInput')).sendKeys('blablapassword').then(() => { 
    //  element(by.id('submitButton')).click(); 
    // }); 
    // }); 
    }); 



    it('page should have Inventory title', function() { 
     expect(browser.getTitle()).toEqual('Inventory'); 
    }); 

    it(' page should have logout button', function() { 
     var completedAmount = element.all(by.css('.logoutButton')); 
     expect(completedAmount.count()).toEqual(1); 
    }); 



    afterAll(function() { 
    //Logout steps 
    }); 

}); 
+0

Это сработало. Спасибо –

+0

добро пожаловать! –

Смежные вопросы