angular.copy Jasmine 测试用例问题

angular.copy issue with Jasmine Test case

请您帮我找到以下问题的解决方案。 我有一个函数和相应的 Jasmine 测试用例,如下面所写的那样。 如果我在我的函数中使用 angular.copy(而且我必须只使用它),Jasmine 测试用例会失败并且显示的错误预计 'originalValue' 等于 'newValue'。 如果我使用 var obj = param1(而不是 angular.copy),那么 Jasmine 测试用例会成功执行。 我必须使用 angular.copy 并同时希望 jasmine 测试用例通过。请帮忙。

函数

function func(param1, param2, condition)
{
var obj = angular.copy(param1);
if(condition){
obj.prop = param2;
}
}

茉莉花测试用例

it('xxxx', function(){
var param = {'prop': ''};
var obj = {'prop': 'orignialValue'};
func(param, 'newValue', true);
expect(obj.prop).toEqual('newValue');
});

您提供的示例不正确。

it('xxxx', function(){
   var obj = {'prop': 'orignialValue'};
   func(param, 'newValue', true);
   expect(obj.prop).toEqual('newValue');
});

这里没有定义param,我猜这应该是obj。

由于您使用 angular.copy,obj.prop 不会被 ref 添加到 param1。

我找到了解决方案。我没有在函数 func 中执行 angular.copy,而是先执行 angular.copy,然后将这个复制的对象作为第一个参数 (param1) 传递给函数 func。