Użyłem kodu z odpowiedzi https://stackoverflow.com/a/25149395/3330910.Jak czekać na odpowiedź żądania http od strony kątomierza
I dalej:
it('HTTP request', function() {
var BackRequest = require('../helper/backRequest');
var request = new BackRequest();
page.visitPage();
request.setBaseUrl('http://localhost:8081');
// Step #1
request.get('/api/v1/one')
.then(function(result){
expect(result.statusCode).toBe(100); // An error #1
expect(result.bodyString).toContain('Some text');
});
// Step #2
expect(1).toBe(2); // an error #2
});
i dostaję błędy w kolejności:
- Error # 2
- Error # 1
Jak mogę zmusić kątomierz czekać na Krok 1, a następnie wykonać krok nr 2.
tylko mogę zrobić Teraz jest łańcuchem następnie() funkcje:
request.get('/api/v1/one')
.then(function(result){
expect(result.statusCode).toBe(100); // An error #1
expect(result.bodyString).toContain('Some text')
.then(function(result){
expect(1).toBe(2);
});
Aktualizuj
Tak, to kończy się następnego podejścia:
describe('Scenarios', function() {
beforeEach(function() {
page.visitPage();
});
var chain = function() {
var defer = protractor.promise.defer();
defer.fulfill(true);
return defer.promise;
};
it('HTTP request', function() {
var BackRequest = require('../helper/backRequest');
var request = new BackRequest();
request.setBaseUrl('http://localhost:8081');
chain()
.then(function() {
// Save data
})
.then(function() {
request.get('/api/v1/one')
.then(function (result) {
expect(result.statusCode).toBe(200);
expect(result.bodyString).toContain('text');
});
})
.then(function() {
// Change and Save again
})
.then(function() {
request.get('/api/v1/one')
.then(function (result) {
expect(result.statusCode).toBe(200);
expect(result.bodyString).toContain('new text');
expect(result.bodyString).not.toContain('text');
});
});
});
});
Dzięki Leo Gallucci o pomoc.
Dzięki za odpowiedź. Użyłem osobnego podejścia It(), ale chcę zrobić wszystko w jednym teście. Czy istnieje sposób dodania zadania do kontrolki Flow z testu? –