3 回答

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊
當(dāng)您的組件設(shè)置狀態(tài)的電子郵件屬性時(shí)。您可以檢查組件的狀態(tài),例如:
expect(component.state().email).toEqual('abc@hello');

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊
嘗試這個(gè)方法,
成分
import React, { Component } from "react";
export class YourComponent extends Component {
state = {email: ''};
handleInputChange = (event) => {
this.setState({ email: event.target.value });
};
render() {
return (
<input
id='email'
onBlur={this.handleInputChange}
name='email'
type='text'
value={this.state.email}
/>
);
}
}
export default YourComponent;
測(cè)試文件
describe("Blur test", () => {
it("input component", () => {
const component = mount(<YourComponent />);
let inputs = component.find('input');
const inputValue = 'abc@hello';
inputs.at(0).simulate('blur', { target: { value: inputValue } });
inputs = component.find('input');
console.log(inputs.debug());// you will get updated value here
expect(inputs.props().value).toEqual(inputValue);
});
});

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊
您在測(cè)試中引用了props().value,而輸入元素沒有這樣的屬性。所以你需要value在輸入中添加 prop
<input
id='email'
onBlur={this.handleInputChange}
name='email'
type='text'
value={this.state.email}
/>
為了測(cè)試預(yù)期的 props 值,您需要強(qiáng)制重新渲染組件以反映新值。在 中Enzyme,我們可以通過使用 來做到這一點(diǎn)wrapper.setProps({})。您可以傳遞所需的值wrapper.setProps({value: 'abc@hello'})或只是一個(gè)空對(duì)象,此處的目的是導(dǎo)致重新渲染。
const inputs = component.find('input');
expect(inputs.length).toEqual(2); // test case passes
inputs.at(0).simulate('blur', { target: { value: 'abc@hello' } });
// setProps should be called on the shallow or root wrapper.
component.setProps({}); // cause rerender.
expect(inputs.at(0).props().value).toEqual('abc@hello'); // test should pass
添加回答
舉報(bào)