Javascript 测试与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

我正在尝试测试一个函数,该函数需要一个使用jasminerequirejs的模块。 这是一个伪代码:

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