单元测试angular.extend函数与jasmine spyOn

时间:2015-12-22 21:04:06

标签: angularjs jasmine

我有一个指令,在某些情况下,我使用

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);
}

1 个答案:

答案 0 :(得分:0)

控制台在断言之前记录angular.extend的值,它应该是jasmine.spy的一个实例,如果不是,那么你创建间谍的方式就会出现问题,我们需要更多上下文,也许你的完整代码可以帮助。 我假设您在beforeEach挂钩或其他挂钩之一的某处创建了挂钩?

请尝试以下代码:

var spy = jasmine.createSpy('extendSpy').and.callThrough();
angular.extend = spy;
expect(spy).toBeCalledWith(dist, src);