使用jasmine spyOn单元测试angular.end功能



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

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

最新更新