我正在测试一个相当大的项目,一切都很好,除了事件(来自节点的EventEmitter / event.js),我必须改变环境以从同一事件中获得不同的结果。
我目前的设置如下:
beforeEach((done)=> {
//<sets up some stuff>
//<sets up spies >
<the_Event_Emitter>.emit('keyword1');
setTimeout(() => {
done();
},1);
});
然后在规格中只是预期。
哪个工作完美,但是我必须编写一个完整的describe-Block,其中包含一个特定的beforeAll-block,用于环境的每个变体(有问题的事件在某个变量上有一个switch-case)
使beforeEach-block看起来像这样:
<the_Event_Emitter>.emit('keyword1');
<change Environment>
<the_Event_Emitter>.emit('keyword1');
...
会“工作”,但是不可接受的不洁,电话泄漏到错误的规格等。
有没有一个像样的方法呢? 来自旧的(2.0之前的)Jasmine的waitFor()可以轻松解决我的所有问题。
[我尝试过没有beforeEach(规范中的.emit等),但由于事件异步运行,因此无效,因此有问题的代码在尝试预期后运行(并且因为代码没有失败而失败)跑了)]
编辑: 我现在通过在之前的测试中设置环境来“做”它。 只要测试按顺序运行(这不是正确的单元测试,就像我所知的那样......)