gpt4 book ai didi

javascript - Jasmine - 依次运行 beforeAll block

转载 作者:行者123 更新时间:2023-11-29 19:18:48 37 4
gpt4 key购买 nike

在使用 Jasmine 测试我的 Meteor 应用程序的某个功能之前,我必须为测试准备不同的东西。因此我使用 beforeAll block 。

  1. 重置数据库
  2. 在数据库中创建一个讲座
  3. 在数据库中创建一个问题
  4. 转到刚刚创建的讲座页面
  5. 等待路由器完成路由

这些异步任务必须串行运行。我不能先去讲座页面,然后在数据库中创建它。遗憾的是,Jasmine 中的 beforeAll block 不会自动串行运行。

这是我当前的代码:

  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() {
...
});

如何在不陷入回调 hell 的情况下以漂亮的风格在 Jasmine 中编写这段代码?

整个应用程序的源代码是开源的,可以在GitHub 上找到。

非常感谢您,最大

最佳答案

你在这里:

beforeAll(function(done) {
async.series([
function(callback) {
Fixtures.clearDB(callback)
},
function(callback) {
Fixtures.createLecture({}, function(error, result) {
lectureCode = result;
callback();
});
},
function(callback) {
Fixtures.createQuestion({}, callback);
},
function(callback) {
Router.go('lecturePage', {lectureCode: lectureCode});
Tracker.afterFlush(callback);
}],function(err, results){ // callback called when all tasks are done
done();
});
}

我还没有测试过,但我希望你有一个想法。您需要创建函数列表,每个函数都将提供回调函数,您需要调用该回调函数才能运行下一个函数。在调用最终回调之后,我们可以调用 done() 来告诉 jasmine 我们已经完成了。希望这会有所帮助。

关于javascript - Jasmine - 依次运行 beforeAll block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34027836/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com