如何使用Jest在ES6类方法中测试对redux存储的调度?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Jest在ES6类方法中测试对redux存储的调度?相关的知识,希望对你有一定的参考价值。

我尝试测试在ES6类方法中发生对redux存储的调度,但我失败了。

不知何故,我无法找到如何模拟商店以获得响应。

方法很简单:

class Foo {
  …
  bar() {
    store.dispatch({ type: FOO_BAR_BAZ });
  }
  …
};

我只是想测试发送的是什么。

我尝试了几件事,包括redux-mock-store,但我没有得到商店的反馈。

it('should foo bar baz', () => {
  const store = {
    dispatch: jest.fn(),
  };

  const foobar = new Foo();
  foobar.bar();

  console.log(store.dispatch.mock);
  //=> { calls: [], instances: [], invocationCallOrder: [], results: [] }
});

如果有人能指出我正确的方向,我将深表感谢。

答案

未调用jest store mock,因为该类无法访问它。解决这个问题的一种方法是将商店传递给构造函数:

class Foo {
  constructor(store) {
    this.store = store
  }

  bar() {
    this.store.dispatch({ type: FOO_BAR_BAZ });
  }
}

-

it('should foo bar baz', () => {
  const store = {
    dispatch: jest.fn(),
  };

  const foobar = new Foo(store);
  foobar.bar();

  console.log(store.dispatch.mock);
});

以上是关于如何使用Jest在ES6类方法中测试对redux存储的调度?的主要内容,如果未能解决你的问题,请参考以下文章

如何模拟 ES6 超类并用 jest.js 监视它?

在 ES6 中使用 Jest 测试 React Flux Store

使用 Jest 模拟 Es6 类

如何在 Jest 中测试 redux 选择器?

使用 Jest 在 React Redux 中对多个调度的操作进行单元测试

Jest - 测试一个 ES6 类