我使用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
上角度前置未定义?为什么这个显示为阵列呢?
答案 0 :(得分:0)
现在,只是为了回答之前的评论,测试不是谎言(与蛋糕不同)。
由于我的代码的一部分在后来从外部存储库加载,因此无法控制它。因此问题的解决方案是创建myExtraJQueryLibraryCodeService
使用方法doStuff(element)
执行element.doStuff(element)
在调用库之后,它工作得很好,myExtraJQueryLibraryCodeService
是唯一可以从单元测试中跳过的地方,因为我们不能让这个外部库工作。