我的应用程序依赖于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 = {...} });
但它仍未定义。
感谢您的帮助。
答案 0 :(得分:0)
将@SpoBo的评论作为答案,以解决我的问题:
export const getCount = createSelector(
getCounterValue,
(counter, props) => counter * props.multiply
);
export const selectCustomer = (id: string) => createSelector(
selectCustomers,
customers => customers[id]
);
答案 1 :(得分:-1)
我认为您想使用注入器来获取$ window提供程序,然后您可以将模拟添加到该对象。
beforeEach(inject(function($injector){
window = $injector.get('$window');
window.gapi = {...};
});