如何使用模拟api调用

时间:2018-03-06 20:31:11

标签: javascript reactjs mocha enzyme

我正在尝试为一个React组件运行测试;但是,此组件的状态是根据从API调用获得的响应来设置的。

componentDidMount() {
  getStatus().then(status => {
    this.setState({status: status});
  });
}

有没有办法使用Mocha来模拟这个响应,而不是实际点击API?由于这是componentDidMount(),我将始终使用Enzyme的shallowmount进入此区块,并抛出fetch is not defined错误

我可以通过在我的测试设置文件中导入isomorphic-fetch来消除此错误,但我更愿意只是模拟假api并做出响应。

1 个答案:

答案 0 :(得分:1)

使用fetch-mock模拟isomorphic-fetch api来电。

var fetchMock = require('fetch-mock');

describe('Test mocking isomorphic-fetch', function() {
  before(function() {
    fetchMock.get('/my/api/endpoint', {hello: 'world'});
  });

  after(function() {
    fetchMock.restore();
  });

  it('should mock fetch', function() {
    // your test code here
  });
});