如何在MOCHA框架中使用superagent库传递JSON参数和授权?

时间:2016-05-24 06:52:39

标签: javascript json node.js mocha

我正在尝试进行API测试。为此,我创建了一个代码来触发POST API,然后生成测试结果。为此,我使用Mocha.js测试框架,并希望使用SuperAgent库来触发API并获得响应。

Here is the code:

var assert = require("assert");
var superagent = require("superagent");
var should = require("should");
var expect = require('expect');
var chai = require('chai');
var chaiHttp = require('chai-http');
var request=require('request');

describe('creating an Incident', function() {

    it('should pass the parameters needed for creating an Incident', function(done) {

superagent
      .post('http://localhost:9001/incident/create' )
       .send({user: 'user123',password: 'pass123'}) //authorization details

      .set('Accept', 'application/json')  //headers
      .set('Content-Type', 'application/json')  //headers

      .send({ Name:'MyIncident', orderId:'12340508'}) //JSON parameters to be passed for creating an incident.

      .end(function(err, res) {

        expect(200,done); //Status code
             if (err) {
               throw err;
                     }
              else {
               res.should.have.status(400);
               done(); 
                  }
         });
    });

});

现在,问题是在命令提示符下运行此代码时,我收到此错误。请看看。

Command Prompt Showing Error

请提出我需要在此计划中进行的更改。 在此先感谢:)

1 个答案:

答案 0 :(得分:0)

这取决于您在服务器端代码中实现身份验证的方式。我在passport及其本地策略的帮助下实现了类似的东西,这需要持久的登录会话。 出于测试目的,我使用supertest和supertest-session在before hook中创建有效的用户会话。来自supertest-session文档的一些例子:

var session = require('supertest-session');
var myApp = require('../../path/to/app');

var testSession = null;

beforeEach(function () {
    testSession = session(myApp);
});

it('should fail accessing a restricted page', function (done) {
    testSession.get('/restricted')
        .expect(401)
        .end(done)
});

it('should sign in', function (done) {
    testSession.post('/signin')
        .send({ username: 'foo', password: 'password' })
        .expect(200)
        .end(done);
});

it('should get a restricted page', function (done) {
    testSession.get('/restricted')
        .expect(200)
        .end(done)
});