我正在嘗試為rc-select編寫一些測試。我想做的測試是檢查 onChange 函數是否被調用。到目前為止我所擁有的:測試組件,使用 rc-select 的樣式版本:ReactSelectTestComponent.jsximport React from 'react';import Select from '../../packages/lab/src/select/Select.jsx';const ReactSelectTestComponent = (props) => {? ? const { options } = props;? ? const onChange = (event) => {? ? ? ? if (props.onChange) {? ? ? ? ? ? props.onChange(event)? ? ? ? }? ? }? ? return (? ? ? ? <div>? ? ? ? ? ? <Select? ? ? ? ? ? ? ? name='test'? ? ? ? ? ? ? ? value='one'? ? ? ? ? ? ? ? options={options}? ? ? ? ? ? ? ? onChange={onChange}? ? ? ? ? ? />? ? ? ? </div >? ? )}export default ReactSelectTestComponent;選擇.test.js:import SelectTestComponent from './SelectTestComponent'import sinon from 'sinon';import { expect as chaiExpect } from 'chai';? // Using Expect styledescribe('Testing Select component', () => {? ? it('should call onChange', () => {? ? ? ? const onChange = sinon.spy();? ? ? ? const options =? ? ? ? ? ? [? ? ? ? ? ? ? ? { label: 'one', value: 'one' },? ? ? ? ? ? ? ? { label: 'two', value: 'two' }? ? ? ? ? ? ];? ? ? ? const wrapper = mount(<SelectTestComponent onChange={onChange} options={options} />);? ? ? ? console.log("wrapper.debug()", wrapper.debug())? ? ? ? const selectWrapper = wrapper.find('Select').first();? ? ? ? selectWrapper.simulate('change', { target: { value: "testtest" } })? ? ? ? selectWrapper.update()? ? ? ? chaiExpect(onChange.called).to.be.true;? ? });})但是,我收到此錯誤。Expected value? ?true? ? Received:? ? ? false? ??? ? Message:? ? ? expected false to be true? ? ? 38 |? ? ? ? ?selectWrapper.update()? ? ? 39 |?? ? > 40 |? ? ? ? ?chaiExpect(onChange.called).to.be.true;? ? ? ? ?|? ? ? ? ?^? ? ? 41 |? ? ?});? ? ? 42 |?? ? ? 43 |? ? ?/*? ? ? at Object.<anonymous> (tests/src/Select.test.js:40:9)我應該在 find() 調用中使用另一個選擇器嗎?我覺得我已經嘗試了所有的選擇。
使用 Enzyme、Sinon 和 ChainonChange 測試 onChange 不被調用?
jeck貓
2023-07-20 10:55:51