【发布时间】:2017-09-21 12:43:12
【问题描述】:
所以我想在一些单元测试之前或之后清理我的数据库。
基本上,您将在我的代码块中看到的代码位于 mocha 的 afterAll 块中。我正在使用 webdriver.io testrunner 来运行我的测试。
我不明白的是,如何使用连接范围之外的 db 东西,请参阅:
function createConnection(){
MongoClient.connect('mongodb://127.0.0.1:24001/meteor', function(err, db) {
if (err)
throw err;
console.log("connected to the mongoDB !");
let myCollection = db.collection('test_collection');
// do stuff with myCollection
});
}
如果可能的话,我更喜欢这样的:
function createConnection(){
MongoClient.connect('mongodb://127.0.0.1:24001/meteor', function(err, db){
if (err)
throw err;
}
}
function getCollection(name){
return db.collection(name) //don't have db at this scope, problem?
}
//app.js
createConnection();
let myCollection = getCollection('data');
...//do stuff with myCollection
closeConnection();
这可能吗?
【问题讨论】:
-
您是否要访问真实数据库?
-
是的 mongodb 2.6.7,或者我怎么能理解你的问题?
-
这是个坏主意。你总是为你的测试模拟数据库。这同样适用于 http 请求。看看github.com/williamkapke/mongo-mock 之类的东西,用它代替真正的数据库。
-
@lukaleli 我不同意。如果您应该模拟数据库或 http 请求,则取决于您要测试的内容。例如,如果您模拟所有 http 请求,性能或负载测试就没有多大意义。如果我的目标是测试一个单元 - 是的,您模拟数据库和 http 请求,因为您想测试隔离的单元并希望测试运行得非常快,以使其能够在每次构建应用程序时运行。如果我的目标是测试整个系统,那么使用测试数据库就可以了。
-
@Rhayene 我完全同意。我以为 OP 是在谈论单元测试。
标签: javascript node.js mongodb mocha.js webdriver-io