在多个测试用例中使用 JWT token mocha node-js
Use JWT token in multiple test cases mocha node-js
我如何创建一个给我 JWT 令牌的可重用函数,这样我就可以执行需要令牌的测试用例,而无需在每个测试用例文件中一次又一次地调用登录函数
account.js
describe("Account", () => {
var token;
describe("/POST Login", () => {
it("it should gives the token", (done) => {
chai.request(server)
.post('api/v1/account')
.set('Accept', 'application/json')
.send({ "email": "john@gmail.com", "password": "123456" })
.end((err, res) => {
res.should.have.status(200);
res.body.should.have.property("token");
token = res.body.token //----------------TOKEN SET
done();
});
});
});
describe("/GET account", () => {
it("it should get the user account", (done) => {
chai.request(server)
.get('api/v1/account')
.set('x-auth-token', token)
.end((err, res) => {
res.should.have.status(200);
done();
});
});
});
});
类别
describe("Category", () => {
var token;
//Login function duplicate in both the files
describe("/POST Login", () => {
it("it should gives the token", (done) => {
chai.request(server)
.post('api/v1/account')
.set('Accept', 'application/json')
.send({ "email": "john@gmail.com", "password": "123456" })
.end((err, res) => {
res.should.have.status(200);
res.body.should.have.property("token");
token = res.body.token //----------------TOKEN SET
done();
});
});
});
describe("/GET category", () => {
it("it should get the user account", (done) => {
chai.request(server)
.get('api/v1/account')
.set('x-auth-token', token)
.end((err, res) => {
res.should.have.status(200);
done();
});
});
});
});
我想从其他文件获取令牌并在不同情况下使用。最好的方法是什么?
我的回答基于您提到的单元测试这一事实。通常,通过单元测试,您正在测试一小部分功能。这意味着,您想在更大的 component/piece 逻辑中测试一小部分逻辑,并且您对测试其他组件不感兴趣(例如在您的案例中测试您的 API。您通常想要测试的是,如果您将从 API 收到 200 成功响应,或者如果您收到 400 或 500,您的逻辑会发生什么情况。我建议模拟您的 API 通过使用像 nock 这样的库来调用你的测试:
https://www.npmjs.com/package/nock
您尝试实现它的方式可能有点复杂。如果你想做这种测试,我不会选择 jest/mocha 作为测试 运行ners。我会准备一个邮递员集合(可能你已经有了),然后我会利用 newman 运行 我的集合并实际进行你想要的集成测试。您可以在这里进一步阅读:Running collections on the command line with Newman
也有不同的方法,但上面的方法可能是一个很好的方法。
我如何创建一个给我 JWT 令牌的可重用函数,这样我就可以执行需要令牌的测试用例,而无需在每个测试用例文件中一次又一次地调用登录函数
account.js
describe("Account", () => {
var token;
describe("/POST Login", () => {
it("it should gives the token", (done) => {
chai.request(server)
.post('api/v1/account')
.set('Accept', 'application/json')
.send({ "email": "john@gmail.com", "password": "123456" })
.end((err, res) => {
res.should.have.status(200);
res.body.should.have.property("token");
token = res.body.token //----------------TOKEN SET
done();
});
});
});
describe("/GET account", () => {
it("it should get the user account", (done) => {
chai.request(server)
.get('api/v1/account')
.set('x-auth-token', token)
.end((err, res) => {
res.should.have.status(200);
done();
});
});
});
});
类别
describe("Category", () => {
var token;
//Login function duplicate in both the files
describe("/POST Login", () => {
it("it should gives the token", (done) => {
chai.request(server)
.post('api/v1/account')
.set('Accept', 'application/json')
.send({ "email": "john@gmail.com", "password": "123456" })
.end((err, res) => {
res.should.have.status(200);
res.body.should.have.property("token");
token = res.body.token //----------------TOKEN SET
done();
});
});
});
describe("/GET category", () => {
it("it should get the user account", (done) => {
chai.request(server)
.get('api/v1/account')
.set('x-auth-token', token)
.end((err, res) => {
res.should.have.status(200);
done();
});
});
});
});
我想从其他文件获取令牌并在不同情况下使用。最好的方法是什么?
我的回答基于您提到的单元测试这一事实。通常,通过单元测试,您正在测试一小部分功能。这意味着,您想在更大的 component/piece 逻辑中测试一小部分逻辑,并且您对测试其他组件不感兴趣(例如在您的案例中测试您的 API。您通常想要测试的是,如果您将从 API 收到 200 成功响应,或者如果您收到 400 或 500,您的逻辑会发生什么情况。我建议模拟您的 API 通过使用像 nock 这样的库来调用你的测试: https://www.npmjs.com/package/nock
您尝试实现它的方式可能有点复杂。如果你想做这种测试,我不会选择 jest/mocha 作为测试 运行ners。我会准备一个邮递员集合(可能你已经有了),然后我会利用 newman 运行 我的集合并实际进行你想要的集成测试。您可以在这里进一步阅读:Running collections on the command line with Newman
也有不同的方法,但上面的方法可能是一个很好的方法。