我对RequireJS很新,并且在将QUnit编写为源代码时遇到了麻烦,该源代码具有使用requireJS动态加载模块的逻辑.
以下是源代码:factory/Factory.js*
getPage: function (callback) {
//doSomething here
require(['page/something'], function() {
callback();
})
}
Run Code Online (Sandbox Code Playgroud)
在运行QUnit时,永远不会加载模块"page/something",并且永远不会调用回调.这里有什么我想念的吗?感谢您的回复.
**QUnit factory/FactoryTests.js*
define(['underscore', 'factory/Factory'],
function (_, Factory) {
module("Factory", {
setup:function () {
},
teardown:function () {
}
});
test("GetPage", function () {
var isCallbackInvoked = false;
var mockCallback = function () {
isCallbackInvoked = true;
}
Factory.getPage(mockCallback);
ok(isCallbackInvoked);
});
});
Run Code Online (Sandbox Code Playgroud)
*test-require-config.js**
require.config({
baseUrl: "../../resources/js",
paths:{
jquery:'../jquery-1.8.2',
jquery_star_rating : '../jquery/jquery.rating',
underscore:'..underscore-1.4.1',
backbone:'../backbone-0.9.2',
jquery_star_rating : '../jquery.rating',
text : '../require-text-2.0.3',
sinon: '../../../../sinon',
},
shim:{
underscore:{
exports:'_'
},
backbone:{
deps:["jquery", "underscore"],
exports:"Backbone"
}
jquery_star_rating : {
deps : ['jquery']
}
}
});
var dependencies = [
'jquery',
'jquery_star_rating',
'underscore',
'backbone',
'sinon',
];
require(dependencies, function () {
require(['../../../../test/js/testsuite'], function(suite){
})
});
Run Code Online (Sandbox Code Playgroud)
testsuite.js
function () {
QUnit.config.autostart = false;
var testModules = [
"factory/FactoryTests.js"
];
require(testModules, QUnit.start);
}());
Run Code Online (Sandbox Code Playgroud)
谢谢!!
首先,澄清一下:您的QUnit测试页面是什么样的?我猜它要么列出零测试,要么是一个空白页面.
如果是这样的话,我在同样的事情上遇到了很多麻烦."正确"的答案正是你所做的.但经过大量的代码处理后,在我的设置中,QUnit仍然在我的任何测试定义之前开始,尽管设置QUnit.config.autostart = false.
在testsuite.js结束时,尝试调用QUnit.load()而不是QUnit.start()(你也可以放弃autostart = false).这是一个无证件的功能,但它是唯一对我有用的东西.我相信它是默认情况下QUnit附加到onLoad事件的函数.不幸的是,使用RequireJS,onLoad在大多数js文件加载之前触发.
| 归档时间: |
|
| 查看次数: |
4116 次 |
| 最近记录: |