MochaJS - 在其他文件中重用块
MochaJS - Reuse block in other files
目前我正在使用 SuperTest 来测试 API 并且对于每个请求我都需要从管理员用户那里获取访问令牌,所以我创建了这个请求(工作正常):
authenticate.js
const request = require('supertest');
var storeAccessToken;
describe ('POST /Authenticate', function() {
it ('Should return access token', function(done) {
request('http://myendpoint.com')
.post('/TokenAuth/Authenticate')
.send({
"username": "admin",
"password": "admin"})
.end(function(err, res) {
if (err) return done(err);
storeAccessToken = res.body.result.accessToken;
done();
});
});
});
现在我存储了访问令牌(变量storeAccessToken),我需要在before() 另一个文件。
getKpiRequest.js
const request = require('supertest');
var storeAccessToken;
describe ('GET /Kpi/Availables', function() {
before(function (done){
request('http://myendpoint.com')
.post('/TokenAuth/Authenticate')
.send({
"username": "admin",
"password": "admin"})
.end(function(err, res) {
if (err) return done(err);
storeAccessToken = res.body.result.accessToken;
assert.equal(res.status, 200);
done();
});
});
});
如何避免重复getKpiRequest.js文件中的代码?
您可以在另一个文件中定义身份验证函数,然后将其导入到测试文件中
// common.js
function authenticate() {
return request('http://myendpoint.com')
.post('/TokenAuth/Authenticate')
.send({
"username": "admin",
"password": "admin"})
.then((res) => {
assert.equal(res.status, 200);
return res.body.result.accessToken;
});
}
module.exports = {
authenticate
}
// authenticate.js
const request = require('supertest');
const authenticate = require('./common').authenticate;
var storeAccessToken;
describe ('POST /Authenticate', function() {
it ('Should return access token', function(done) {
authenticate().then((token) => {
storeAccessToken = token;
done();
}).catch(done);
});
});
// getKpiRequest.js
const request = require('supertest');
const authenticate = require('./common').authenticate;
var storeAccessToken;
describe ('GET /Kpi/Availables', function() {
before(function (done){
authenticate()
.then((token) {
storeAccessToken = token;
done();
}).catch(done);
});
});
保持函数通用,以便您可以重用它
目前我正在使用 SuperTest 来测试 API 并且对于每个请求我都需要从管理员用户那里获取访问令牌,所以我创建了这个请求(工作正常):
authenticate.js
const request = require('supertest');
var storeAccessToken;
describe ('POST /Authenticate', function() {
it ('Should return access token', function(done) {
request('http://myendpoint.com')
.post('/TokenAuth/Authenticate')
.send({
"username": "admin",
"password": "admin"})
.end(function(err, res) {
if (err) return done(err);
storeAccessToken = res.body.result.accessToken;
done();
});
});
});
现在我存储了访问令牌(变量storeAccessToken),我需要在before() 另一个文件。
getKpiRequest.js
const request = require('supertest');
var storeAccessToken;
describe ('GET /Kpi/Availables', function() {
before(function (done){
request('http://myendpoint.com')
.post('/TokenAuth/Authenticate')
.send({
"username": "admin",
"password": "admin"})
.end(function(err, res) {
if (err) return done(err);
storeAccessToken = res.body.result.accessToken;
assert.equal(res.status, 200);
done();
});
});
});
如何避免重复getKpiRequest.js文件中的代码?
您可以在另一个文件中定义身份验证函数,然后将其导入到测试文件中
// common.js
function authenticate() {
return request('http://myendpoint.com')
.post('/TokenAuth/Authenticate')
.send({
"username": "admin",
"password": "admin"})
.then((res) => {
assert.equal(res.status, 200);
return res.body.result.accessToken;
});
}
module.exports = {
authenticate
}
// authenticate.js
const request = require('supertest');
const authenticate = require('./common').authenticate;
var storeAccessToken;
describe ('POST /Authenticate', function() {
it ('Should return access token', function(done) {
authenticate().then((token) => {
storeAccessToken = token;
done();
}).catch(done);
});
});
// getKpiRequest.js
const request = require('supertest');
const authenticate = require('./common').authenticate;
var storeAccessToken;
describe ('GET /Kpi/Availables', function() {
before(function (done){
authenticate()
.then((token) {
storeAccessToken = token;
done();
}).catch(done);
});
});
保持函数通用,以便您可以重用它