反应单元测试

时间:2016-10-05 10:12:57

标签: unit-testing reactjs mocha sinon

我正在尝试在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

0 个答案:

没有答案