1

一些 ReactJs 组件正在使用 Axios NPM 库来触发 Http Posts。使用 Axios 的帖子示例,我们有:

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

发布后,触发“then”以移动到下一页。

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

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

是否可以同时模拟 Axios 调用和 window.location.assign ?

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

4

1 回答 1

0

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

it('test', () => {
  window.location.assign = jest.fn();
  // your function that you want to test
  expect(window.location.assign).toBeCalledWith('/nextscreen');
});
于 2019-04-06T11:28:14.920 回答