TypeError:无法分配给对象'#<object>'React / JEST的只读属性'x'

时间:2018-02-20 12:20:48

标签: reactjs jestjs enzyme babel-jest

当我为反应组件编写测试用例时,我正在

TypeError:无法指定对象'#'的只读属性'x'

其中,当应用程序运行时,它不会抛出类似的错误

它的代码非常基本

  

this.props.defaultForm = true;

为什么测试和实际应用RUN的行为不同?

如果我想编写测试用例,可以解决什么问题?

2 个答案:

答案 0 :(得分:3)

有一种方法可以做到这一点,
使用Object.assign()方法

为对象创建“ 克隆

let clone = Object.assign({}, this.props);

更改其值并返回结果。

clone.defaultForm = true;
return clone;  

但是要考虑到Object.assign()创建了对象的浅表副本。因此,如果需要深层复制,建议使用以下方法:

let deepClone = JSON.parse(JSON.stringify(this.props));
deepClone.defaultForm = true;
return deepClone; 

干杯。

答案 1 :(得分:0)

您无法更改组件的属性。它是只读的。

如果你想改变它。您必须使用connect中的reduxmapStateToProps函数。

您可以在此处找到更多信息:https://redux.js.org/basics/usage-with-react#implementing-container-components