2015-09-28 2 views
0

У меня есть простое приложение, где я могу добавлять разговоры (Q/A). Я написал тест для него -

describe('New Survey:', function() { 
    it('should be added', function() { 
    browser.get('http://127.0.0.1:8090/#/newConversation'); 
    //picking a user 
    element.all(by.css('.form-control')).get(5).click(); 
    element(by.model('vm.user')).sendKeys('test'); 
    element(by.repeater('user in vm.users').row(6)).click(); 
//push some answers 
    var inputs = element.all(by.css('.form-control.validated')).each(function(element,index){ 
     element.sendKeys('test answer'); 
    }); 
    //and send it 
    element(by.id('submit')).click(); 
    element(by.css('.confirm')).click() 
      browser.waitForAngular(); 
    }); 
}); 

после нажатия .confirm кнопку этот метод называется

this.saveSurvey = function(conv) { 
     return $http.post('/conv', conv); 
    }; 

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

+0

Получаете ли вы ответ от сервера при отправке на него почтового запроса? –

+0

похоже, что я не знаю, что может быть причиной? – whd

+0

Его сервер, который должен ответить. Если вообще не отправляется какой-либо ответ, то все, что вы можете сделать, это ждать несколько секунд явно или если есть элемент, который изменяется по завершении почтового запроса (например, уведомление об успешном завершении или добавленная строка текста и т. Д.), , вы можете дождаться, когда это произойдет. –

ответ

1

Вы можете подождать, пока функция click() не будет выполнена, и ваш почтовый запрос будет отправлен, ожидая, пока его обещание будет возвращено. Вот как -

element(by.id('submit')).click().then(function(){ 
    element(by.css('.confirm')).click().then(function(){ 
     browser.sleep(2000); 
     //If your server returns a response in some way that the conversation is saved, you can verify it here. 
    }); 
}); 

Надеюсь, это поможет.