1
我的應用程序對gapi javascript客戶端(https://apis.google.com/js/api.js)和jsapi(https://www.google.com/jsapi)有依賴關係。用Jasmine有效模擬全球房產
我用AngularJS構建我的應用程序,並使用Karma(以前稱爲Testacular)作爲Test runner。
我設法在噶加載它們和明年刺探一些方法,有效地嘲笑他們:
it('should call gapi on share', inject(function (config, doc) {
config.appId = 'testAppId';
var shareClientMock = {
setItemIds: jasmine.createSpy('setItemIds'),
showSettingsDialog: jasmine.createSpy('showSettingsDialog')
};
spyOn(gapi.drive.share, 'ShareClient').andReturn(shareClientMock);
scope.share();
expect(gapi.drive.share.ShareClient).toHaveBeenCalledWith(config.appId);
expect(shareClientMock.setItemIds).toHaveBeenCalledWith([doc.info.id]);
expect(shareClientMock.showSettingsDialog).toHaveBeenCalled();
}));
我想嘲笑他們,實際上並沒有包括它,茉莉,但我可以弄清楚如何。 我試圖在beforeEach創建存根:
beforeEach(function() { window.gapi = {...} });
,但它仍然是不確定的。
感謝您的幫助。
這是行不通的。你應該在注入之前使用一個裝飾器。也就是在提供$的模塊中。 ''''module('module',function)$ provide.decorator('$ window',function($ delegate){ $ delegate.gapi = {...}; return $ delegate; }); });'''' – SpoBo 2013-11-13 11:11:33
@SpoBo,您的評論確實幫了我,我希望它更明顯。我希望你能將它作爲答案張貼,它值得一些upvotes。 – 2015-04-13 17:07:42
如果您願意,請自己動手做出答案。很高興幫助你。依賴注入在測試過程中非常有用。 – SpoBo 2015-04-14 22:21:35