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