这个问题涉及 NodeJS 的 Mocha 测试框架。
默认行为似乎是启动所有测试,然后在异步回调传入时对其进行处理。
运行异步测试时,我想运行每个测试after之前的异步部分已被调用。
我怎样才能做到这一点?
重点不在于“结构化代码按照您构建的顺序运行”(令人惊讶!) - 而是正如 @chrisdew 所建议的那样,无法保证异步测试的返回顺序。重述问题 - 位于(同步执行)链下游的测试不能保证由异步测试设置的所需条件将在运行时准备就绪。
因此,如果您需要在第一个测试中设置某些条件(例如登录令牌或类似的),则必须使用像before()
在继续之前设置测试这些条件。
将依赖测试包装在一个块中并运行async before
挂钩它们(注意之前块中的“完成”):
var someCondition = false
// ... your Async tests setting conditions go up here...
describe('is dependent on someCondition', function(){
// Polls `someCondition` every 1s
var check = function(done) {
if (someCondition) done();
else setTimeout( function(){ check(done) }, 1000 );
}
before(function( done ){
check( done );
});
it('should get here ONLY once someCondition is true', function(){
// Only gets here once `someCondition` is satisfied
});
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)