單元測試React組件prop更新的正確方法是什麼?如何測試React組件上的prop更新
這是我的測試夾具;
describe('updating the value', function(){
var component;
beforeEach(function(){
component = TestUtils.renderIntoDocument(<MyComponent value={true} />);
});
it('should update the state of the component when the value prop is changed', function(){
// Act
component.props.value = false;
component.forceUpdate();
// Assert
expect(component.state.value).toBe(false);
});
});
這工作得很好,並測試通過,但是這顯示反應警告消息
'Warning: Dont set .props.value of the React component <exports />. Instead specify the correct value when initially creating the element or use React.cloneElement to make a new element with updated props.'
所有我想要測試是一個屬性的更新,而不是爲了創建元素的新實例與不同的財產。有沒有更好的方法來做這個屬性更新?
在實際操作中,渲染是不是在所有情況下明確要求。更好的方法是使用狀態數據更改來觸發重新呈現,因爲在直播環境中可能會有一些其他鉤子,這些鉤子會通過直接調用狀態更改而錯過。 – arkoak
如果您正在測試對某些東西(如「componentWillReceiveProps」或「componentDidUpdate」等)的支持更改的響應,這也是我的做法。也就是說,我會嘗試重寫組件,以便在渲染時動態計算狀態值,如果可能的話(而不是使用狀態)。 –
+1的答案。請注意,現在是'ReactDOM.render'而不是'React.render'(我認爲版本爲0.14)。 – jrubins