Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单元测试传递给控制器功能的参数值变化_Javascript_Angularjs_Unit Testing_Karma Jasmine - Fatal编程技术网

Javascript 单元测试传递给控制器功能的参数值变化

Javascript 单元测试传递给控制器功能的参数值变化,javascript,angularjs,unit-testing,karma-jasmine,Javascript,Angularjs,Unit Testing,Karma Jasmine,我想测试在函数参数中传递的变量是否更改。传递的变量本身应该更改 我使用Karma和Jasmine进行单元测试 我的控制器代码如下所示: angular.module('myApp').controller('MyController',function($scope){ $scope.functions={}; $scope.functions.deleteSomething=函数(someObject,条件){ someObject.someArray=someObject.someArra

我想测试在函数参数中传递的变量是否更改。传递的变量本身应该更改

我使用Karma和Jasmine进行单元测试

我的控制器代码如下所示:

angular.module('myApp').controller('MyController',function($scope){
$scope.functions={};
$scope.functions.deleteSomething=函数(someObject,条件){
someObject.someArray=someObject.someArray.filter(函数(existingCondition){
返回现有条件!==条件;
});
};

})
Javascript中的
=
执行引用相等检查。尝试使用
angular.equals()


是的,但正如我所说,我不能更改控制器,因为它是由其他人维护的。存在一些可能性:(1)其他人有一个错误,以上建议应作为更正。(2) 如果
==是按设计工作的:
condition=objects.someArray[0]
。这假设代码中的
条件将始终引用数组中的值!!!(3) 如果
==
是根据设计和业务需求,并且
条件不一定引用数组中的值,那么控制器不应该处理对象,并且您违反了控制器的合同。感谢您的帮助!给了我一个新的视角来看待这个问题。
  someObject.someArray = someObject.someArray.filter(function(existingCondition){
      return !angular.equals(existingCondition, condition);
  });