使用酶来测试通过post请求获取数据的表

时间:2017-11-13 17:08:32

标签: reactjs mocha enzyme

我有一个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>
    );
  }
}

1 个答案:

答案 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);
    });
  });