我已经采取了几种不同的方式。删除后发现查找,查找从未找到任何内容。如果我发表评论this.accounts.remove...
,则查找有效。如果我将删除线留在那里,它就不会。我对cucumberjs,mongo客户端和节点的理解表明find应该有效。
我甚至尝试将删除/查找序列移动到自己的文件中,并在那里工作。似乎只有当我在黄瓜中运行它时,序列才会失败。我怀疑是因为黄瓜加载文件的方式,但我不确定。
有人可以帮我弄清楚如何让这个工作吗?
World.js:
var db = new Db('FlashCards', new Server('localhost', 27017));
db.open(function(err, opened) {
if (err) {
console.log("error opening: ", err);
done(err);
}
db = opened;
});
var {
defineSupportCode
} = require('cucumber');
function CustomWorld() {
this.db = db;
this.accounts = db.collection('accounts');
hooks.js:
Before(function(result, done) {
//comment this out, and leave a done(), it works!!!!
this.accounts.remove(function(error, result){
if( error) {
console.log("Error cleaning the database: ", error);
done(error);
}
done();
})
});
user_steps.js:
Then('I will be registered', function(done) {
let world = this;
this.accounts.find({
username: world.user.username
}).toArray(
function(err, accounts) {
if (err) {
console.log("Error retrieveing data: ", err);
done(err);
}
console.log("Accounts found: ", accounts);
expect(accounts).to.be.ok;
expect(accounts.length).to.be.equal(1);
done();
});
});
Inovcation:
cucumber-js --compiler es6:babel-core/register
答案 0 :(得分:0)
您在删除方法中缺少要删除的项目。我假设要删除的项目是
this.accounts.remove(function(error,result){
答案 1 :(得分:0)
您缺少一个删除方法的参数。该参数是要删除的查询。我假设,删除查询是{username:world.user.username}
var qry = {username:world.user.username}; 请尝试以下内容:
Before(function(result, done) { //comment this out, and leave a done(), it works!!!!
var qry={username: world.user.username};
this.accounts.remove(qry, function(error, result){
if( error) {
console.log("Error cleaning the database: ", error);
done(error);
}
done();
}) });