我想以这种方式注入google,我可以在runner.js中注入我自己的google模拟器进行单元测试,我不想进行http调用。
paths: {
lib: 'lib',
async: 'lib/async',
google: 'async!http://maps.google.com/maps/api/js?sensor=false'
},
define(['google'], function(google) {
});
谷歌总是未定义。
当我使用定义时它起作用:
define(['async!http://maps.google.com/maps/api/js?sensor=false'], function(google) {
});
但我不能那样使用它,因为goodle在生产代码中被硬编码为字符串。这样我就无法在runner.js路径定义中的单元测试中注入我自己的google模拟...
为什么第一种方式不起作用?
答案 0 :(得分:0)
Google库不实现模块模式。他们将所有功能公开给全球谷歌变量。在你的模拟库中,只需在全局可访问的谷歌变量上模拟所有内容。解决方法是包含填充程序配置,以便在加载时,RequireJS知道要传递给您的模块:
requirejs.config({
// ...
shim: {
'google': {
exports: 'google'
},
}
});
在上面的示例中,您说当加载Google模块时,将全局window.google变量作为模块引用传递给您的模块。