And*_*ggs 4 mocha.js should.js reactjs enzyme
我想检查当我的组件上单击一个按钮时,它会调用我创建的方法来处理点击.这是我的组件:
import React, { PropTypes, Component } from 'react';
class Search extends Component {
constructor(){
super();
this.state = { inputValue: '' };
}
handleChange = (e) => {
this.setState({ inputValue: e.target.value });
}
handleSubmit = (e) => {
e.preventDefault();
return this.state.inputValue;
}
getValue = () => {
return this.state.inputValue;
}
render(){
return (
<form>
<label htmlFor="search">Search stuff:</label>
<input id="search" type="text" value={this.state.inputValue} onChange={this.handleChange} placeholder="Stuff" />
<button onClick={this.handleSubmit}>Search</button>
</form>
);
}
}
export default Search;
Run Code Online (Sandbox Code Playgroud)
这是我的考验
import React from 'react';
import { mount, shallow } from 'enzyme';
import Search from './index';
import sinon from 'sinon';
describe('Search button', () => {
it('calls handleSubmit', () => {
const shallowWrapper = shallow(<Search />);
const stub = sinon.stub(shallowWrapper.instance(), 'handleSubmit');
shallowWrapper.find('button').simulate('click', { preventDefault() {} });
stub.called.should.be.true();
});
});
Run Code Online (Sandbox Code Playgroud)
称为属性的调用返回false.我已经尝试了很多关于语法的变化,我想也许我只是缺少一些基本的东西.任何帮助将不胜感激.
bju*_*son 10
我对Sinon也比较陌生.我一般都将spy()s 传递给组件道具,然后检查它们(虽然你可以用stub()同样的方式):
let methodSpy = sinon.spy(),
wrapper = shallow(<MyComponent someMethod={methodSpy} />)
wrapper.find('button').simulate('click')
methodSpy.called.should.equal(true)Run Code Online (Sandbox Code Playgroud)
我指出这一点是因为我认为这是单元测试组件最直接的方法(测试内部方法可能会有问题).
在您的示例中,您尝试测试组件的内部方法,这不起作用.不过,我遇到过这个问题,应该可以帮到你.尝试:
it('calls handleSubmit', () => {
const shallowWrapper = shallow(<Search />)
let compInstance = shallowWrapper.instance()
let handleSubmitStub = sinon.stub(compInstance, 'handleSubmit');
// Force the component and wrapper to update so that the stub is used
compInstance.forceUpdate()
shallowWrapper.update()
shallowWrapper.find('button').simulate('click', { preventDefault() {} });
handleSubmitStub.called.should.be.true();
});Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2113 次 |
| 最近记录: |