在使用 Jasmine 测试 Meteor 应用程序的某个功能之前,我必须为测试准备不同的东西。因此我使用 beforeAll 块。
- 重置数据库
- 在数据库中创建讲座
- 在数据库中创建一个问题
- 转到刚刚创建的讲座的页面
- 等待路由器完成路由
这些异步任务必须串联运行。我不能先去讲座页面,然后在数据库中创建它。可悲的是beforeAll
Jasmine 中的块不会自动连续运行。
这是我当前的代码:
beforeAll(function(done) {
Fixtures.clearDB(done);
});
beforeAll(function(done) {
Fixtures.createLecture({}, function(error, result) {
lectureCode = result;
done();
});
});
beforeAll(function(done) {
Fixtures.createQuestion({}, done);
});
beforeAll(function(done) {
Router.go('lecturePage', {lectureCode: lectureCode});
Tracker.afterFlush(done);
});
beforeAll(waitForRouter);
it("....", function() {
...
});
我怎样才能在 Jasmine 中以漂亮的风格编写这段代码而不会陷入回调地狱?
整个应用的Source Code是开源的,可以在GitHub上找到
非常感谢你,马克斯