如何在摩卡中保持两个请求之间的会话
How to maintain session between two request in mocha
我正在使用 mocha 测试框架来测试 rest-api。为了维护会话,我使用了超级测试的 agent。我正在使用 sessoin_key 访问 REST-API。但我认为 agent 正在使用 cookie 访问 REST-API。但我不想用这个。因为我是我的项目,所以我们正在通过 REST-API 到 session_key 进行会话。
rest-API终点是:/rest_api/addCarpenter
请求正文添加木工:
Request Body:
{
"first_name": "john",
"last_name": "cooper",
"session_key": "dshjdhs78237",
}
在我们发送的请求正文中 session_key,我编写了以下测试用例来测试 add carpenter 但得到 Uncaught AssertionError: expected 1 to equal 0。
var supertest = require("supertest");
var assert = require("assert");
var expect = require("chai").expect;
var request = require('supertest'),
should = require('chai').should();
describe('Test session', function() {
var agent = request.agent('http://localhost:8000') ;
before(function(done){
agent
.post('/rest_api/login')
.send({'username': 'Bill', 'password': 'xyz'})
.end(function(err, res) {
if (err) return done(err);
done();
});
})
after(function(done){
agent
.get('/rest_api/logout')
.end(function(err, res) {
if (err) return done(err);
done();
});
})
describe('test add corpenter', function(){
it('should return error=1 after login', function (done) {
agent
.post('/api/addCarpenter')
.send({"first_name": "Bill", "last_name": "cooper", "mobile1": 9090907789,})
.end(function (err, res) {
if (err) return done(err);
res.body.error.should.equal(0);
done();
});
});
});
});
断言错误:
Uncaught AssertionError: expected 1 to equal 0
+ expected - actual
-1
+0
at Test.<anonymous> (justTest.js:38:33)
at Test.assert (node_modules/supertest/lib/test.js:156:6)
at assert (node_modules/supertest/lib/test.js:127:12)
at node_modules/supertest/lib/test.js:124:5
at Test.Request.callback (node_modules/supertest/node_modules/superagent/lib/node/index.js:785:12)
at IncomingMessage.<anonymous> (node_modules/supertest/node_modules/superagent/lib/node/index.js:990:12)
at _stream_readable.js:920:16
如果您想要 session_key
在您的请求正文中,您应该将其手动添加到您要发送的对象中:
.send({"first_name": "Bill", "last_name": "cooper", "mobile1": 9090907789, "session_key": theSessionKey})
如果你想保持你目前的测试布局,我会在 describe() 级别介绍这个 theSessionKey
,所以将它添加到 [=13= 的声明下面]变量。
现在根据调用登录后 res
的内容,在 before()
函数中设置 theSessionKey
变量。
您应该在 after()
部分为空 theSessionKey
。
我正在使用 mocha 测试框架来测试 rest-api。为了维护会话,我使用了超级测试的 agent。我正在使用 sessoin_key 访问 REST-API。但我认为 agent 正在使用 cookie 访问 REST-API。但我不想用这个。因为我是我的项目,所以我们正在通过 REST-API 到 session_key 进行会话。
rest-API终点是:/rest_api/addCarpenter
请求正文添加木工:
Request Body:
{
"first_name": "john",
"last_name": "cooper",
"session_key": "dshjdhs78237",
}
在我们发送的请求正文中 session_key,我编写了以下测试用例来测试 add carpenter 但得到 Uncaught AssertionError: expected 1 to equal 0。
var supertest = require("supertest");
var assert = require("assert");
var expect = require("chai").expect;
var request = require('supertest'),
should = require('chai').should();
describe('Test session', function() {
var agent = request.agent('http://localhost:8000') ;
before(function(done){
agent
.post('/rest_api/login')
.send({'username': 'Bill', 'password': 'xyz'})
.end(function(err, res) {
if (err) return done(err);
done();
});
})
after(function(done){
agent
.get('/rest_api/logout')
.end(function(err, res) {
if (err) return done(err);
done();
});
})
describe('test add corpenter', function(){
it('should return error=1 after login', function (done) {
agent
.post('/api/addCarpenter')
.send({"first_name": "Bill", "last_name": "cooper", "mobile1": 9090907789,})
.end(function (err, res) {
if (err) return done(err);
res.body.error.should.equal(0);
done();
});
});
});
});
断言错误:
Uncaught AssertionError: expected 1 to equal 0
+ expected - actual
-1
+0
at Test.<anonymous> (justTest.js:38:33)
at Test.assert (node_modules/supertest/lib/test.js:156:6)
at assert (node_modules/supertest/lib/test.js:127:12)
at node_modules/supertest/lib/test.js:124:5
at Test.Request.callback (node_modules/supertest/node_modules/superagent/lib/node/index.js:785:12)
at IncomingMessage.<anonymous> (node_modules/supertest/node_modules/superagent/lib/node/index.js:990:12)
at _stream_readable.js:920:16
如果您想要 session_key
在您的请求正文中,您应该将其手动添加到您要发送的对象中:
.send({"first_name": "Bill", "last_name": "cooper", "mobile1": 9090907789, "session_key": theSessionKey})
如果你想保持你目前的测试布局,我会在 describe() 级别介绍这个 theSessionKey
,所以将它添加到 [=13= 的声明下面]变量。
现在根据调用登录后 res
的内容,在 before()
函数中设置 theSessionKey
变量。
您应该在 after()
部分为空 theSessionKey
。