我有一个看起来像这样的休息类:
class UserAPI {
create() {
request.post(users_api)
.set('Content-Type', 'application/json')
.set('Authorization', auth)
.send(userData)
.end(function(error, response) {
if(error) {
console.log("CreateUsers error = ", error);
} else {
console.log(response.body);
return(response.body);
}
});
}
}
module.exports = UserAPI;
我在我的测试中使用这样:
let HomePage = require('../lib/pages/homePage.js');
let LoginPage = require('../lib/pages/loginPage.js');
let UserAPI = require('../lib/restapi/user.js');
let userAPI = new UserAPI();
var myUser;
let homePage, loginPage;
describe('Login', function() {
beforeEach(function() {
myUser = userAPI.create();
homePage = new HomePage();
loginPage = new LoginPage();
homePage.visit();
...
});
it('Test', function() {
...
});
});
其余调用有效,但在测试结束时执行。我想要做的是拥有myUser = userAPI.create();在homePage = new HomePage()之前执行;我尝试使用,完成,完成等没有成功。理解承诺和控制流程仍然有些困难。 如果有人可以帮助澄清我的示例代码,我将非常感激。谢谢。
答案 0 :(得分:1)
在UserAPI.create()
方法内部,您需要创建一个承诺,并在从API调用收到响应后解析它。
class UserAPI {
create() {
var defer = protractor.promise.defer();
request.post(users_api)
.set('Content-Type', 'application/json')
.set('Authorization', auth)
.send(userData)
.end(function(error, response) {
if(error) {
console.log("CreateUsers error = ", error);
defer.reject(error)
} else {
console.log(response.body);
//return(response.body);
defer.fulfill(response.body);
}
});
return defer.promise();
}
}
module.exports = UserAPI;