我的应用程序依赖于 gapi javascript 客户端 ( https://apis.google.com/js/api.js ) 和 jsapi ( https://www.google.com/jsapi )。
我使用 AngularJS 构建我的应用程序并使用 Karma(以前称为 Testacular)作为测试运行器。
我设法通过在 Karma 中加载它们并接下来监视一些方法来有效地模拟它们:
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();
}));
我想用 Jasmine 模拟它们,但实际上不包括它,但我可以弄清楚如何。我尝试在 beforeEach 中创建一个存根:
beforeEach(function () { window.gapi = {...} });
但它仍然是未定义的。
谢谢你的帮助。