我使用了答案https://stackoverflow.com/a/25149395/3330910中的代码。
我接下来会这样做:
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
});
我按顺序得到错误:
如何强制量角器等待步骤#1,然后执行步骤#2。
目前我唯一可以做的是连接then()函数:
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);
});
更新
因此,最终采用下一种方法:
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');
});
});
});
});
感谢Leo Gallucci寻求帮助。
答案 0 :(得分:6)
第2步立即解决,因为没有什么可以等待的,没有webdriver承诺,你只是将绝对数字与expect(1).toBe(2);
进行比较
您可以坚持使用链接then()
,或者我喜欢的方式是单独的it()
块:
it('HTTP request', function () {
// Step #1 code ...
});
it('keeps testing other things in this step #2', function () {
expect(1).toBe(2);
});
BTW我很高兴你发现我的另一个answer很有用!