Mockgoose .POST方法在调用insert()时失败

时间:2015-10-26 00:15:06

标签: mongodb mongoose mocha chai

我正在使用BDD方法开发API。我唯一失败的测试是mongodb POST方法。 Mocha说我的insert()属性是未定义的。我的所有其他数据库函数都在传递。但从我能找到的是我说的是正确的。这是我的路线:

server.post('/courses/course', function(req, res, next) {
    req.course.insert(req.body, {}, function(err, results) {
        if(err) return next(err);
        res.send(results);
    });
});

我的测试(mocha / CHAI):

var id;

    it('should create a new course basic info', function(done) {
        request(server)
            .post('/courses/course')
            .send({
                tdcNumber: 'some wierd number',
                shortTitle: 'Ammo something',
                longTitle: 'Mass Destruction Power'
            })
            .expect(200)
            .end(function(err, res) {
                if(err) return done(err);
                expect(err).to.equal(null);
                expect(res.body.length).to.equal(1);
                expect(res.body[0]._id.length).to.equal(24);
                id = res.body[0]._id;
                //expect(res.body.success).to.equal(true);
                //expect(res.body).to.be.an('object');
                //expect(res.body.course.shortTitle).to.equal('Ammo something');
                //expect(res.body.course.tdcNuymber).to.equal('some wierd number');
                //expect(res.body.course.longTitle).to.equal('Mass Destruction Power');
            })
            done();
    });

我确信这是一个愚蠢的noobie错误。我在github上发布了我的项目https://github.com/EnergeticPixels/apiMockgoose

所以它在哪里?

1 个答案:

答案 0 :(得分:0)

使用了错误的方法。应该使用.save',如下所示:

courseName.save(function(err) {
        if(err) res.send(err);
        res.json({message: 'A new course name added to the library shelves!', data: courseName});
    });

示例代码为https://github.com/EnergeticPixels/hermes-cardCatalog/commit/a675a322589cd1857b628ccf3122a18ae4c748cf

的新项目