我在我的describe
有这样的代码:before(a)
。为什么Mocha的`before()`函数传递是否带参数?
当a
看起来是这样的:
function a() {
return chai.request(app)
...
.then(res => {
res.blah.should.blah;
return Promise.resolve();
});
}
...一切的伟大工程(这是一个非常快速的调用)
然而,当我做a
采取一些输入变量:
function a(dummy, my_var) {
return chai.request(app)
... // use my_var here
.then(res => {
res.blah.should.blah;
console.log("finished!");
return Promise.resolve();
});
}
承诺永远不会解决。两种意见:
finished!
确实获得正确输出(立即)dummy
填充。
它填充了这一点:
function (err) {
if (err instanceof Error || toString.call(err) === '[object Error]') {
return done(err);
}
if (err) {
if (Object.prototype.toString.call(err) === '[object Object]') {
return done(new Error('done() invoked with non-Error: ' + JSON.stringify(err)));
}
return done(new Error('done() invoked with non-Error: ' + err));
}
if (result && utils.isPromise(result)) {
return done(new Error('Resolution method is overspecified. Specify a callback *or* return a Promise; not both.'));
}
done();
}
我不知道在哪里,从准确的,但我并不需要它,这就是为什么我只是把它变成一个虚拟变量。
现在我怀疑这与它有关,但我想知道为什么我的解决方法不能在这里实现这个诀窍。
我仍然希望使用before(a)
作为默认情况,而不是my_var
未定义。当我真的想通过这个变量,我打算:
before(() => {
return a('my_content');
})
启蒙的解释。那太糟糕了......没有向后兼容的方式来做我的改变。好吧。谢谢! – Kev