2016-05-24 5 views
0

Ich versuche API-Tests durchzuführen. Dafür habe ich einen Code erstellt, um die POST API auszulösen und dann Testergebnisse zu generieren. Dafür benutze ich Mocha.js Testrahmen und möchte die SuperAgent-Bibliothek verwenden, um die API auszulösen und die Antwort zu erhalten.Wie JSON-Parameter und Autorisierung mithilfe von Superagent-Bibliothek im MOCHA-Framework übergeben?

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(); 
        } 
     }); 
    }); 

}); 

Jetzt ist das Problem, während der Ausführung dieses Codes an der Eingabeaufforderung, bekomme ich diesen Fehler. Bitte guck dir das an.

Command Prompt Showing Error

Bitte legen nahe, Veränderungen, die ich in diesem Programm zu tun. Vielen Dank im Voraus :)

+0

Mein _guess_ ist, dass Sie anrufen '.send()' zweimal, und der zweite Anruf wird das erste Gespräch (mit den Anmeldeinformationen) überschreiben. – robertklep

+0

Was soll ich tun? Da muss ich beide passieren. :( –

+0

One '.send()' mit allen Werten in einem Objekt? – robertklep

Antwort

0

Es hängt davon ab, wie Sie Authentifizierung in Ihrem serverseitigen Code implementiert. Ich habe etwas Ähnliches mit Hilfe von passport und seiner lokalen Strategie implementiert, die eine dauerhafte Anmeldesitzung erfordert. Für Testzwecke benutze ich superestest und supertest-session, um eine gültige Benutzersitzung im Vorher-Hook zu erstellen. Einige Beispiele von Supertest-Session Dokumentation:

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) 
}); 
Verwandte Themen