我有一个react bootstrap table
,可以获取如下的实时数据。我想用酶添加单元测试。但是,该表需要首先从我的URL获取实时数据。
我不想获取数据,因为我没有在我的数据库中插入测试数据。有没有办法使用虚假数据进行测试而不是发送邮件请求。
class MyTable extends Component {
getAttachments(){
const url = `${myUrl}`;
const data = {id: this.props.id};
agent.post(url)
.type('json')
.set(getAuthHeader())
.send(data)
.then( (result) => {
this.setState({data: result.body});
console.log(result.body);
}).catch(error => {
console.error(error);
});
}
componentWillMount(){
this.getAttachments();
}
render() {
return (
<div className="App">
<BootstrapTable data={this.state.data} version='4'>
<TableHeaderColumn dataField="id" isKey={true} dataAlign="center" dataSort={true}>Product ID</TableHeaderColumn>
<TableHeaderColumn dataField="name" dataSort={true}>Product Name</TableHeaderColumn>
<TableHeaderColumn dataField="price" dataFormat={priceFormatter}>Product Price</TableHeaderColumn>
</BootstrapTable>
</div>
);
}
}
答案 0 :(得分:0)
sinon
可用于模拟请求和单元测试:
const promiseEmpty = Promise.resolve([]);
it('should render without exploding', () => {
const putRequest = sinon.stub(agent.Request.prototype, 'send', () => promiseEmpty);
const wrapper = shallow(<AttachmentTable {...minProps}/>);
putRequest.restore();
return promiseEmpty.then(() => {
wrapper.update();
expect(wrapper.length).to.equal(1);
});
});