当我为反应组件编写测试用例时,我正在
TypeError:无法指定对象'#'的只读属性'x'
其中,当应用程序运行时,它不会抛出类似的错误
它的代码非常基本
this.props.defaultForm = true;
为什么测试和实际应用RUN的行为不同?
如果我想编写测试用例,可以解决什么问题?
答案 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
中的redux
和mapStateToProps
函数。
您可以在此处找到更多信息:https://redux.js.org/basics/usage-with-react#implementing-container-components