我使用jasmine来测试JavaScript代码。
JavaScript代码由使用requireJs加载的模块组成。
当我加载json文件使用json requirejs-plugins这需要text! plugin
我看不到在web浏览器上的任何输出。
奇怪的是我也没有得到任何JavaScript错误。json RequireJS插件+茉莉花
这是我的代码(1)。
任何想法?
P.S .:
不确定,但也许问题是关于时间延迟。
如果我从本地获得该文件(time latency = 6ms
),它可以工作。
如果我从远程服务器(time latency = 170 ms
)获取文件(具有相同的本地内容),它将显示一个空白页面。
任何想法如何解决这个问题?
(1)
/*global define, window*/
(function() {
'use strict';
var specUrl = './';
define([
'jasmine',
'jasmineHtml',
'jasmineJquery',
'json!json_data', // if I comment this line is ok,
// otherwise I get empty page with no error
specUrl + 'models/user.spec'
], function (jasmine) {
var initialize = function() {
// some code
};
return {
initialize: initialize
};
});
}());
我看过的文档有关Asynchronous specs,但目前尚不清楚如何解决这个问题,但。有任何想法吗?
我做了一个非常简单的代码:(1)哪个起作用,(2)哪个不起作用,因为可能从服务器获取json_data需要大约250ms。
(1)
define([
'appJasmine',
// 'json!json_data',
], function (app) {
app.initialize(); // it display data on browser
});
(2)
define([
'appJasmine',
'json!json_data',
], function (app) {
app.initialize(); // it does not display data on browser
});
超时问题是异步调用不可靠。如果某个时候有更多的模块或者您处理的延迟时间比平常高,这将会失败。 – 2012-07-18 11:34:53