使用require.js和jasmine模拟Google Earth事件

时间:2012-12-26 17:39:53

标签: javascript requirejs jasmine google-earth

我有以下模块,但是在我的茉莉花测试期间(例如 - 在我的测试工具内部)我很难设置这个模型。特别是,我想知道我将如何/应该在测试工具的上下文中替换async!https://www.google.com/jsapi调用(或硬编码的url引用),以及哪些事件我为了在我的测试中正确触发回调,我会在“google.load”和“google.earth.createInstance”的测试中进行间谍活动吗?在下面的示例代码中,uiSelector参数将是加载地球地图的div id。

提前感谢您的时间。

define('googleearthloader',
[ "async!https://www.google.com/jsapi" ],
function() {

return {
        init: function(uiSelector, callbackSuccess,callbackError) {
            google.load("earth", "1", { 'callback': function() { google.earth.createInstance(uiSelector, callbackSuccess, callbackError); } });
            }

       };

});

1 个答案:

答案 0 :(得分:1)

你可以这样做:

var spy = sinon.stub(google, 'load');
.....your init call
expect(spy).toHaveBeenCalledWith("earth1", "1");

您可以使用此间谍存根调用测试您想要的内容。