【发布时间】:2013-10-17 12:44:24
【问题描述】:
我是 Node.js、Mongoose 和在此环境中进行测试的新手。我在单独的文件中声明了以下架构。
Issue = mongoose.model("Issue", {
identifier: String,
date: String,
url: String,
name: String,
thumbnailURL: String
});
然后我有这个方法,它只返回 MongoDB 集合中的所有 Issue 实例。
function issues(request, response) {
response.setHeader('Content-Type', 'text/json');
Issue.find().sort('date').exec(function(error, items) {
if (error) {
response.send(403, {"status": "error", "error:": exception});
}
else {
response.send(200, {"issues": items});
}
});
}
我通过实验已经走到了这一步,现在我想测试它,但我遇到了一个问题。如何在不设置 MongoDB 连接等的情况下进行测试。我知道我可以设置所有这些东西,但这是一个集成测试。我想编写单元测试来测试以下内容:
- 函数是否正确设置了内容类型
- 函数是否按
date字段排序 - 发生错误时函数是否返回 403?
- ...等等
我很想知道如何重构现有代码以使其更易于单元测试。我尝试过创建第二个调用的函数,接受response 和Item 模式对象作为参数,但感觉不对。有人有更好的建议吗?
【问题讨论】:
-
你可能想从下面选择一个答案作为接受;)
标签: node.js mongodb unit-testing mongoose jasmine