我有一个指令,在某些情况下,我使用
angular.extend(dist, src)
现在我想测试这个案例,并检查是否调用angular.extend。
我正在尝试使用spyOn
spyOn(angular, 'extend')
然后在测试
expect(angular.extend).toHaveBeenCalled()
我根本不确定我能不能做到,但我决定试一试。
谢谢你的帮助。
编辑:
这是根据你的建议编辑的我的测试。
it('should create new scope and extend config if config is passed to directive', function() {
var spy = jasmine.createSpy('extendSpy').and.callThrough();
angular.extend = spy;
timeout.flush();
_.forEach(scope.accordionConfig, function(configItem) {
if (configItem.config) {
expect(angular.extend).toHaveBeenCalled();
}
});
});
在beforeEach钩子中,我没有任何特别的东西,只是分配配置,为rest测试创建一些其他准备,并编译指令。
以下是链接函数的一个片段,我正在尝试测试
if (scope.format === 'directive') {
if (scope.config) {
newScope = $rootScope.$new();
angular.extend(newScope, scope.config);
}
scope.content = $compile(scope.content)(newScope || scope);
}
console在断言之前记录angular.extend的值,它应该是jasmine.spy
的一个实例,如果不是,那么创建spy的方式有问题,我们需要更多的上下文,也许您的完整代码会有所帮助。我假设您在beforeEach
钩子的某个地方或在其他钩子上创建了钩子?
尝试以下代码:
var spy = jasmine.createSpy('extendSpy').and.callThrough();
angular.extend = spy;
expect(spy).toBeCalledWith(dist, src);