我正在尝试在Mocha + Enzyme中编写反应成分的测试用例。我使用Sinon来监视文档元素。
在一个react组件方法中,我有以下语句,其中尝试在Button click事件上为Select元素添加一个值。
handleClick(e){
e.preventDefault();
if(e.target.value!='select')
this.setState({
selectedValue: e.target.value
})
else
document.getElementsByName("foodSelector")[0].value="select";
}
所以我尝试用Mocha嘲笑这个方法,
describe('(Container) ReactContainer', () => {
beforeEach(function(){
wrapper = shallow(<SelectContainer/>);
})
it('should trigger change event when policy dropdown is clicked', function(){
const selectElt = wrapper.find('#foodSelector');
selectElt.simulate('change', { preventDefault() {}, target: { value: 'TestingValue' } });
selectElt.simulate('change', { preventDefault() {}, target: { value: 'select' } });
});
});
我收到错误&#39; TypeError:无法设置属性&#39; value&#39; of undefined&#39;,那么任何人都可以帮我解决如何模拟document.getElementById吗?
我尝试使用如下的sinon,
var selectElt = document.createElement('select');
selectElt.id = 'foodSelector';
var f = sinon.stub(document, 'getElementById').withArgs('foodSelector').returns(selectElt);
expect(f.value).to.be.equal('select');
即便如此,我也会收到与下面相同的错误,
TypeError: Cannot set property 'value' of undefined