체크 박스에 change
이벤트를 시뮬레이트하기 위해 효소를 사용하려고 시도했는데, 체크 된 경우 어서 트하기 위해 chai-enzyme
을 사용합니다. 이것은 내 Hello
입니다효소로 '변경'을 시뮬레이션 한 후 체크 박스가 선택되지 않았습니다.
구성 요소를 반응 :
import React from 'react';
class Hello extends React.Component {
constructor(props) {
super(props);
this.state = {
checked: false
}
}
render() {
const {checked} = this.state;
return <div>
<input type="checkbox" defaultChecked={checked} onChange={this._toggle.bind(this)}/>
{
checked ? "checked" : "not checked"
}
</div>
}
_toggle() {
const {onToggle} = this.props;
this.setState({checked: !this.state.checked});
onToggle();
}
}
export default Hello;
그리고 내 테스트 :이 테스트를 실행하면
import React from "react";
import Hello from "../src/hello.jsx";
import chai from "chai";
import {mount} from "enzyme";
import chaiEnzyme from "chai-enzyme";
import jsdomGlobal from "jsdom-global";
import spies from 'chai-spies';
function myAwesomeDebug(wrapper) {
let html = wrapper.html();
console.log(html);
return html
}
jsdomGlobal();
chai.should();
chai.use(spies);
chai.use(chaiEnzyme(myAwesomeDebug));
describe('<Hello />',() => {
it('checks the checkbox',() => {
const onToggle = chai.spy();
const wrapper = mount(<Hello onToggle={onToggle}/>);
var checkbox = wrapper.find('input');
checkbox.should.not.be.checked();
checkbox.simulate('change', {target: {checked: true}});
onToggle.should.have.been.called.once();
console.log(checkbox.get(0).checked);
checkbox.should.be.checked();
});
});
의 checkbox.get(0).checked
는 false
, 그리고 주장 checkbox.should.be.checked()
보고서 오류 :
AssertionError: expected the node in <Hello /> to be checked <input type="checkbox" checked="checked">
예를 들어 출력에 이미 checked="checked"
이 있으므로 메시지가 이상합니다.
너무 많은 것들이 포함되어 있기 때문에 어디서 잘못되었는지는 잘 모르겠습니다. 정확히 동일한 테스트 :
나는 또한 주변에 검색을 작성하는 동안 나는 정확히 같은 문제를 건너 왔어요, these lines