我有一个指令,在某些情况下,我使用
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 hook中,我没有什么特别的,只需分配配置,为休息测试创建一些其他准备工作并编译指令。
以下是我尝试测试的链接功能片段
if (scope.format === 'directive') {
if (scope.config) {
newScope = $rootScope.$new();
angular.extend(newScope, scope.config);
}
scope.content = $compile(scope.content)(newScope || scope);
}
答案 0 :(得分:0)
控制台在断言之前记录angular.extend的值,它应该是jasmine.spy
的一个实例,如果不是,那么你创建间谍的方式就会出现问题,我们需要更多上下文,也许你的完整代码可以帮助。
我假设您在beforeEach
挂钩或其他挂钩之一的某处创建了挂钩?
请尝试以下代码:
var spy = jasmine.createSpy('extendSpy').and.callThrough();
angular.extend = spy;
expect(spy).toBeCalledWith(dist, src);