【发布时间】:2014-09-10 14:11:46
【问题描述】:
我正在尝试让我的测试套件在我的 express.js 应用程序中运行,但这是我的第一个 express.js 应用程序,也是我第一次使用 mocha,我不确定如何设置所有内容。
这是我的测试
should = require 'should'
assert = require 'assert'
expect = require 'expect'
request = require 'superagent'
mongoose = require 'mongoose'
config = require '../../config/config'
describe "POST", ->
app = require('../../app')
beforeEach (done)->
mongoose.connect config.db, (err) ->
if err
console.log "Error! #{err}"
done()
describe '/users/:id/activities', ->
it 'should return created document', (done) ->
request(app).post('http://localhost:3000/users/1/activities').send(
description: "hello world"
tags: "foo, bar"
).set('Content-Type','application/json')
.end (e, res) ->
console.log(res.body.description)
expect(res.body.description).should.equal('hello world')
done()
我遇到的几个问题是...... 1)在测试套件中,它无法连接到我的测试数据库(在我的配置文件中); 2) 我在尝试post 时收到此错误消息
1) POST /users/:id/activities should return created document:
TypeError: Object #<Request> has no method 'post'
有人可以为我指出如何让一切正常运行的正确方向吗?
我尝试连接到 MongoDB 时返回的错误是 Error! Error: Trying to open unclosed connection.
我通过运行这个命令来运行 mocha 套件
NODE_ENV=test mocha test/controllers/activities.test.coffee --compilers coffee:coffee-script/register -R spec
编辑
activities.coffee(路线)
express = require 'express'
router = express.Router()
mongoose = require 'mongoose'
Activity = mongoose.model 'Activity'
module.exports = (app) ->
app.use '/', router
router.post '/users/:id/activities', (req, res, next) ->
activity = Activity(
user_id: req.params.id
description: req.body.description,
tags: req.body.tags
)
activity.save (err)->
if not err
res.json(activity)
else
res.json({ error: err })
router.get '/users/:id/activities/:activity_id', (req, res, next) ->
Activity.findById req.params.activity_id, (err, activity) ->
if not err
res.json(activity)
else
res.json({ error: err })
app.js
require('coffee-script/register');
var express = require('express'),
config = require('./config/config'),
fs = require('fs'),
mongoose = require('mongoose');
mongoose.connect(config.db);
var db = mongoose.connection;
db.on('error', function () {
throw new Error('unable to connect to database at ' + config.db);
});
var modelsPath = __dirname + '/app/models';
fs.readdirSync(modelsPath).forEach(function (file) {
if (/\.coffee$/.test(file)) {
require(modelsPath + '/' + file);
}
});
var app = express();
require('./config/express')(app, config);
app.listen(config.port);
exports.app = app;
【问题讨论】:
标签: node.js mongodb express mocha.js