茉莉花测试在angular.copy

时间:2017-05-10 17:59:03

标签: angularjs unit-testing jasmine frontend

我使用Jasmine单元测试测试了一个Angularjs前端,我收到了一个奇怪的错误:

  

使用[Object({foo:' bar'})]

调用预期的doStuff      

但实际调用是[undefined,Object({foo:' bar'})]

单元测试代码:

it('TestCase - test angular broadcast', function() {
    controller.anObjectInController = { foo: 'bar' };
    scope.$broadcast('doStuffBroadcast');

    expect(myService.doStuff).toHaveBeenCalledWith({ foo: 'bar' });
});

正在测试的实际代码:

$scope.$on('doStuffBroadcast', function() {
    var fields = angular.copy(vm.anObjectInController);
    vm.doStuff(fields);
});

为什么在简单的angular.copy上角度前置未定义?为什么这个显示为阵列呢?

1 个答案:

答案 0 :(得分:0)

现在,只是为了回答之前的评论,测试不是谎言(与蛋糕不同)。

由于我的代码的一部分在后来从外部存储库加载,因此无法控制它。因此问题的解决方案是创建myExtraJQueryLibraryCodeService 使用方法doStuff(element)执行element.doStuff(element)

在调用库之后,它工作得很好,myExtraJQueryLibraryCodeService是唯一可以从单元测试中跳过的地方,因为我们不能让这个外部库工作。