Javascript 测试与Jasmine异步的requireJS方法
我正在尝试测试一个函数,该函数需要一个使用jasmine和requirejs的模块。 这是一个伪代码:Javascript 测试与Jasmine异步的requireJS方法,javascript,asynchronous,requirejs,jasmine,Javascript,Asynchronous,Requirejs,Jasmine,我正在尝试测试一个函数,该函数需要一个使用jasmine和requirejs的模块。 这是一个伪代码: define("testModule", function() { return 123; }); var test = function() { require(['testModule'], function(testModule) { return testModule + 1; }); } describe("Async requirejs te
define("testModule", function() {
return 123;
});
var test = function() {
require(['testModule'], function(testModule) {
return testModule + 1;
});
}
describe("Async requirejs test", function() {
it("should works", function() {
expect(test()).toBe(124);
});
});
它失败了,因为它是一个异步方法。如何使用它执行测试
注意:我不想更改我的代码,只想更改我的测试
描述函数。对于异步内容的测试,检查运行()
,等待()
和等待()
:
虽然这样对我来说有点丑,所以你也可以考虑下面的选项。< /P>
1。我建议您尝试使用以下方法编写异步测试用例:
// Run an async expectation
async.it("did stuff", function(done) {
// Simulate async code:
setTimeout(function() {
expect(1).toBe(1);
// All async stuff done, and spec asserted
done();
});
});
2。您还可以在中运行测试,需要的回调:
require([
'testModule',
'anotherTestModule'
], function(testModule, anotherTestModule) {
describe('My Great Modules', function() {
describe('testModule', function() {
it('should be defined', function() {
expect(testModule).toBeDefined();
});
});
describe('anotherTestModule', function() {
it('should be defined', function() {
expect(anoterTestModule).toBeDefined();
});
});
});
});
3.另一点是,我想这段代码并没有像您期望的那样工作:
var test = function() {
require(['testModule'], function(testModule) {
return testModule + 1;
});
};
因为如果调用test()
,它不会返回testModule+1