Rematch实践指南
  • 重新思考Redux
  • 目的
  • API 文档
    • @rematch/core API
    • Init Redux API
    • Plugin API
  • 技巧
    • Devtools
    • React
    • Vue
    • Testing
    • TypeScript
    • Immer
    • Decoupling reducers
  • 插件
    • Rematch Select
    • Rematch Loading
    • Rematch Persist
    • Rematch Updated
    • React Navigation
    • Rematch Immer
  • 灵感
Powered by GitBook
On this page
  • Reducers
  • Effects
  1. 技巧

Testing

PreviousVueNextTypeScript

Last updated 6 years ago

Todo示例:

Reducers

用store测试。

  import { init, dispatch } from "@rematch/core";
  import myModel from './myModel';

  describe("myModel model", () => {
    it("reducer: my reducerName should do something", () => {
      const store = init({
        models: { myModel }
      });

      dispatch.myModel.reducerName(payload);

      const myModelData = store.getState().myModel;
      expect(myModelData).toBe("something");
    });
  });

直接测试reducer。

  import myModel from './myModel';

  describe("myModel model", () => {
    it("reducer: my reducerName should do something", () => {
      const result = myModel.reducers.reducerName(payload);
      expect(result).toBe("something");
    });
  });

Effects

用store测试。

  import { init, dispatch } from "@rematch/core";
  import myModel from './myModel';

  describe("myModel model", () => {
    it("effect: my effectName should do something", async () => {
      const store = init({
        models: { myModel }
      });

      await dispatch.myModel.effectName(payload);

      const myModelData = store.getState().myModel;
      expect(myModelData).toBe("something");
    });
  });

直接测试effects。

  import myModel from './myModel';

  describe("myModel model", () => {
    it("effect: my effectName should do something", async () => {
      const reducerMockFn = jest.fn();

      // bind the functions you want to check
      await myModel.effects.effectName.call({ reducerThatIsGoingToBeCalled: reducerMockFn }, payload);

      // checking if it was called
      expect(reducerMockFn).toHaveBeenCalled();

      // checking if it was called with the expected params
      expect(reducerMockFn).toHaveBeenCalledWith("something");
    });
  });

React