Javascript 单元测试传递给控制器功能的参数值变化
我想测试在函数参数中传递的变量是否更改。传递的变量本身应该更改 我使用Karma和Jasmine进行单元测试 我的控制器代码如下所示: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
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);
});