【发布时间】:2015-12-01 18:49:19
【问题描述】:
在使用 Jasmine 测试 Meteor 应用程序的某个功能之前,我必须为测试准备不同的东西。因此我使用 beforeAll 块。
- 重置数据库
- 在数据库中创建讲座
- 在数据库中创建一个问题
- 转到刚刚创建的讲座页面
- 等待路由器完成路由
这些异步任务必须串联运行。我不能先去讲座页面,然后在数据库中创建它。遗憾的是,Jasmine 中的 beforeAll 块不会自动串联运行。
这是我当前的代码:
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 中以漂亮的风格编写这段代码而不陷入回调地狱?
整个应用的源代码是开源的,可以在GitHub找到
非常感谢您, 最大
【问题讨论】:
-
看看异步库 (link)
-
我试图让 caolan/async 工作,但我失败了。你能根据我上面的代码给我一个例子吗?
标签: javascript testing meteor jasmine meteor-velocity