首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在mocha中维护两个请求之间的会话

如何在mocha中维护两个请求之间的会话
EN

Stack Overflow用户
提问于 2015-09-23 12:14:40
回答 1查看 1.7K关注 0票数 0

我正在使用mocha测试框架来测试rest。为了维护会话,我使用了超级测试的代理。我正在使用sessoin_key访问REST-API。但我认为代理正在使用cookies访问REST-API。但我不想用这个。因为我是我的项目,所以我们是通过进行会话的另一个session_key REST

Rest-API端点是: /rest_api/addCarpenter

请求主体添加木匠:

代码语言:javascript
运行
复制
  Request Body:
  {
    "first_name": "john",
    "last_name": "cooper",
    "session_key": "dshjdhs78237",
  }

在我们发送session_key的请求体中,我编写了下面的测试用例,用于测试add木工,但得到了不正确的AssertionError:预期为1等于0。

代码语言:javascript
运行
复制
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();
        });
    });
  });
});

断言错误:

代码语言:javascript
运行
复制
 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-23 13:21:40

如果要将session_key添加到请求正文中,则应将其手动添加到要发送的对象中:

代码语言:javascript
运行
复制
.send({"first_name": "Bill", "last_name": "cooper", "mobile1": 9090907789, "session_key": theSessionKey})

如果您想保持测试布局,就像现在一样,我将在te theSessionKey ()级别引入这个测试布局,所以将它添加到agent变量的声明下面。

现在,在调用登录后,根据theSessionKey的内容在before()函数中设置res变量。

您应该在theSessionKey部件中为空after()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32739328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档