我是 Node.js、Mongoose 和在这个环境中测试的新手。我在单独的文件中声明了以下架构。
Issue = mongoose.model("Issue", {
identifier: String,
date: String,
url: String,
name: String,
thumbnailURL: String
});
然后我有这个方法,它只返回Issue
MongoDB 集合中的所有实例。
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
模式对象作为参数,但感觉不对。有人有更好的建议吗?