使用Jest模拟Axios和模拟Windows.Location.Assignment

时间:2019-04-06 11:07:19

标签: reactjs axios-mock-adapter jest-mock-axios

某些ReactJs组件正在使用Axios NPM库触发Http帖子。使用Axios的帖子示例,我们可以:

axios.post('/user', {
       firstName: 'Fred',
       lastName: 'Flintstone'
   })
   .then(function (response) {
       window.location.assign('/nextscreen');
   })
  .catch(function (error) {
    console.log(error);
  }); 

发布帖子后,将触发“然后”以转到下一页。

我们正在使用Jest和Enzyme对Axios功能进行单元测试。此外,我们已经成功地单独模拟了:   -使用jest-mock-axios的Axios帖子   -使用笑话模拟的window.location.assign方法。

但是,当在Axios模拟中触发“ then”时,模拟的window.location.assign方法每次都会失败。

是否可以一起模拟Axios调用和window.location.assign?

我可以传入一个包装window.location.assign方法的方法,但这是不正确的。

1 个答案:

答案 0 :(得分:0)

不确定是否正确嘲笑了window对象。 但是您总是可以像这样在jest测试文件中模拟它:

it('test', () => {
  window.location.assign = jest.fn();
  // your function that you want to test
  expect(window.location.assign).toBeCalledWith('/nextscreen');
});