Node.js / Express / Moka / Supertest API Rest Vide du Corps de la Requête

Je l'ai cherché partout ce que je peux pour trouver une solution à cette question. La seule chose que j'ai trouvé est un post sans réponse. Je m'excuse si j'ai oublié quelque chose.

Le problème est que lorsque j'essaie d'obtenir de la POST valeurs dans le /createQuestion API, le corps est vide/non défini. J'ai des erreurs comme ce Cannot read proprety 'question' of undefined à venir à partir de l'API.

L'Express API:

app.post("/createQuestion", function(req, res) {
    var questionType = req.body.question.type;
    var questionText = req.body.question.text;
    var questionDuringClass = req.body.question.duringClass;

    //Do a bunch of stuff

    res.send(response);
});

Le test:

    var should = require('should'); 
    var assert = require('assert');
    var request = require('supertest');  
    var winston = require('winston');

    request = request('http://localhost:8080');

        describe('Questions', function() { //Test suite
            before(function(done) {
                done();
            });

        it('Should create a freeResponse question', function(done) { //Test case
        var postData = {
            "question" : {
                "type" : "freeResponse",
                "text" : "This is a test freeResponse question (automated testing)",
                "duringClass" : "1"
            }
        };

        request()
        .post('/createQuestion')
        .send(postData)
        .expect(200)
        .end(function(err, res) { //.end handles the response
            if (err) {
                return done(err);
            }

            done();
        });
    });

 it('Should delete a freeResponse question', function(done) { //Test case
        var postData = {
            "question" : {
                "type" : "freeResponse",
                "text" : "This is a test freeResponse question (automated testing)",
                "duringClass" : "1"
            }
        };

        request()
        .post('/deleteQuestion')
        .send(postData)
        .expect(200)
        .end(function(err, res) { //.end handles the response
            if (err) {
                return done(err);
            }

            done();
        });
    });

Ce qui me manque? Est le .send() l'envoi de la POST données dans un autre format? N'est-il pas POSTing pour le corps de la demande?

vous avez demande(url), où est une adresse url? c'est une application que vous incluez avant?
Oh, à droite. J'avais changé que juste avant j'ai posté. J'ai ajouté la ligne vers le haut pour mettre l'URL pour l'ensemble de la demande au lieu de passer à chaque test. J'ai supprimé les entrées d'url. Merci
tenir à l'esprit que done() c'est seulement appelé une fois, la première fois c'est un appel, terminer le test.
pouvez-vous essayez de supprimer les deuxième demande ( request().post('/deleteQuestion') ) ?
La droite. Merci. J'ai enlevé le premier fait().

OriginalL'auteur Mike DeMille | 2013-10-25