我不知道如何测试nodejs的导出功能。考虑下面的代码:
exports.create_expense = (req, res, next) ->
User = database.db_model 'user'
req.body.parsed_dt = Date.parse(req.body.date)
req.body.amount = parseInt(req.body.amount)
User.update {_id: req.api_session.id}, {$push: {expenses: req.body}}, (err, numberAffected, raw) ->
if err?
res.send 500
else
res.send 200
User
在这里是一个 Mongoose 对象。我想编写一个测试(使用 mocha)来测试这个函数(在我的测试中我将调用 create_expense
),但由于 User.update
是异步的,我不能只是调用 create_expense
而不传递某种形式的 Promise?我知道我可以使用 super 测试,但这也测试了我不想在这里做的路线。有没有办法测试一下这里的 npm 是否有用?
最佳答案
在User.update
上,您应该调用next
。稍后在测试中您应该调用 done
。
编辑:
提前对我的 CoffeeScript 表示歉意。
在 User.update
回调结束时调用 next
。
你的测试应该看起来像这样:
describe '#create_response', () ->
response = false
req.body.date = new Date
req.body.amount = 123
req.api_session.id = 'asd'
res.send = (code) ->
response = code
it 'should return 500 on invalid request', (done) ->
create_expense req, res, () ->
assert.equal response, 500
done
关于javascript - 如何测试包含异步函数的nodejs导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21327229/