Javascript 摩卡将变量传递到下一个测试
上述方法目前在摩卡不起作用 解决方案是在测试之间共享一个变量,如上所示 使用Javascript 摩卡将变量传递到下一个测试,javascript,testing,mocha.js,Javascript,Testing,Mocha.js,上述方法目前在摩卡不起作用 解决方案是在测试之间共享一个变量,如上所示 使用async.falter()这是非常可能的,我非常喜欢它。有没有办法让它在摩卡实现 谢谢 最好将测试隔离,以便一个测试不依赖于另一个测试中执行的计算。让我们将通过值测试的测试称为测试a,将通过值测试的测试称为测试B。需要考虑的一些问题: 测试A和测试B真的是两种不同的测试吗?如果没有,它们可以合并 测试A是否意味着为测试B提供测试夹具?如果是这样,测试A应该成为每次调用之前或之前的回调。基本上,您可以通过在descrip
async.falter()
这是非常可能的,我非常喜欢它。有没有办法让它在摩卡实现
谢谢 最好将测试隔离,以便一个测试不依赖于另一个测试中执行的计算。让我们将通过值测试的测试称为测试a,将通过值测试的测试称为测试B。需要考虑的一些问题:
或之前的回调。基本上,您可以通过在descripe
的闭包中将数据分配给变量来传递数据
describe('some test', function(){
// Could put here a shared variable
it('should pass a value', function(done){
done(null, 1);
});
it('and then double it', function(value, done){
console.log(value * 2);
done();
});
});
我读过摩卡的代码,如果我没有忘记什么,就没有办法调用
描述,它,或完成回调来传递值。所以上面的方法就是它。非常同意路易斯所说的,这就是摩卡咖啡实际上不支持它的原因。想想你引用的异步方法;如果您的第一个测试失败,那么您将在其余测试中遇到瀑布式失败
正如你所说,你唯一的方法就是在顶部粘贴一个变量:
describe('some test', function(){
var fixture;
before(function(done){
fixture = ...;
done();
});
it('do something', function(done){
fixture.blah(...);
done();
});
});
也可以添加到suit或context对象中
在本例中,它被添加到suit对象中
describe('some test', function(){
var value = 0;
it('should pass a value', function(done){
value = 5;
done();
});
it('and then double it', function(done){
console.log(value * 2); // 10
done();
});
});
您好,您的语句有一个小的修正(引用async的文档):如果任何函数将错误传递给回调函数,则不会执行下一个函数,并且会立即调用主回调函数并显示错误
。。。但是谢谢你。是的,但是这种方法的问题是你会完全取消以下测试的执行,而不是第一次测试失败,然后继续下一个阶段——这有意义吗?@AnthonyMayfield发布一些代码:)也许是要点吧。我想我现在明白了!在您的示例中,两个测试都是同步的,在我的示例中,我尝试在运行一些异步之后更新变量。我很确定我需要使用摩卡咖啡的after方法,现在就开始阅读文档。不过,谢谢你的提议:)不,事实证明描述套件是按顺序运行的。谜团解开了!哈哈,你觉得呢?我在before()方法中获得了一个访问令牌,几乎每个后续测试都需要使用它。请注意,如果您没有使用箭头函数,这里的this
是一个不同的this
。。。我想。(至少,在我的例子中,我试图做的没有起作用,直到我意识到我混合了箭头和正常函数。)mocha建议不要使用箭头函数:这是正确的。这只适用于箭头函数。和非箭头函数的换行
describe('suit', function(){
before(() => {
this.suitData = 'suit';
});
beforeEach(() => {
this.testData = 'test';
});
it('test', done => {
console.log(this.suitData)// => suit
console.log(this.testData)// => test
})
});