Jaki jest prawidłowy sposób testowania jednostki w przypadku aktualizacji komponentu React komponentu.Jak przetestować aktualizację podpory dotyczącej komponentu React
Oto mój test urządzenia;
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);
});
});
To działa prawidłowo, a test przechodzi, jednak wyświetla komunikat reagować ostrzeżenie
'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.'
wszystkim chcę przetestować jest aktualizacja nieruchomości, aby nie tworzyć nowe wystąpienie elementu z inną własnością. Czy istnieje lepszy sposób na wykonanie tej aktualizacji właściwości?
W praktyce tynku nie nazywa się wyraźnie we wszystkich przypadkach. Lepszym sposobem jest użycie zmiany danych stanu w celu wyzwolenia ponownego renderowania, ponieważ mogą istnieć inne haki w środowisku na żywo, których brakuje, bezpośrednio wywołując zmianę stanu. – arkoak
Jeśli testujesz odpowiedź na zmiany rekwizytów w coś podobnego do 'componentWillReceiveProps' lub' componentDidUpdate', itd., To tak też bym to zrobił. Powiedziałem, że spróbuję przepisać komponent tak, aby wartość w stanie była obliczana dynamicznie w czasie renderowania, jeśli to możliwe (zamiast użycia stanu). –
+1 za odpowiedź. Zauważ, że to teraz 'ReactDOM.render' zamiast tylko' React.render' (od wersji 0.14). – jrubins