我正在使用Jasmine 2.0和require.js。当我将异步代码放在beforeEach函数中时,我无法让异步测试正常工作。在异步调用完成之前,我的it语句仍在运行。
这是我的规格:
describe("App Model :: ", function() {
var AppModel;
beforeEach(function(done) {
require(['models/appModel'], function(AppModel) {
AppModel = AppModel;
done();
});
});
// THIS SPEC FAILS AND RUNS BEFORE ASYNC CALL
it("should exist", function(done) {
this.appModel = new AppModel()
expect(this.appModel).toBeDefined();
done();
});
// THIS SPEC PASSES
it("should still exist", function(done) {
require(['models/appModel'], function(AppModel) {
this.appModel2 = new AppModel()
expect(this.appModel2).toBeDefined();
done();
});
});
});
当我在it
中包含异步时,第一个规范失败但第二个规范通过。
理想情况下,我希望beforeEach
异步可以工作而不是不干,并将每个需要复制到单独的语句中。
任何提示?
答案 0 :(得分:3)
本地require var应该有另一个名称包装到外部作用域。同样在“它”中你不需要完成,它只在异步部分。这样的事情必须奏效:
describe("App Model :: ", function() {
var AppModel;
beforeEach(function(done) {
require(['models/appModel'], function(_AppModel) {
AppModel = _AppModel;
done();
});
});
it("should exist", function() {
var appModel = new AppModel()
expect(appModel).toBeDefined();
});
});