【问题标题】:Reset Redux store after each test with jest每次测试后用玩笑重置 Redux 存储
【发布时间】:2021-10-23 19:18:10
【问题描述】:

我正在使用 Jest 来测试我的 Redux 操作,有时会发生测试执行的操作与其他测试执行的操作冲突的情况。 例如,我测试了一个名为 add a user 的操作,因此它将商店的长度增加到 1,然后我测试了另一个名为 add and delete a user 的操作,它期望在该过程之后商店为空,但商店仍有自第一次测试以来就存在的用户。

是否有一种公认的方法可以在每次测试后重置 Redux 存储以重新开始?

【问题讨论】:

    标签: testing redux jestjs specifications


    【解决方案1】:

    我的建议是为每个测试创建一个新的 Redux 存储 - 而不是重置它。 这样,您的中间件等也以干净的状态开始。

    您可以在 Redux Toolkit 测试中使用类似 setupApiStore 的帮助器。

    简化版如下所示

    function setupTestStore() {
      const refObj = {}
      
      beforeEach(() => {
        const store = configureStore({ reducer })
        refObj.store = store
        refObj.Wrapper = function Wrapper({ children }: any) {
          return <Provider store={store}>{children}</Provider>
        }
      })
    
      return refObj
    }
    
    

    在你的测试中

    const storeRef = setupTestStore()
    
    it('tests something', () => {
      render(<MyComponent />, { wrapper: storeRef.wrapper }
    }
    
    
    it('tests something with another store', () => {
      render(<MyComponent2 />, { wrapper: storeRef.wrapper }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-06-29
      • 1970-01-01
      • 2018-09-01
      • 1970-01-01
      • 2018-08-23
      • 2021-02-10
      • 2020-07-31
      • 1970-01-01
      • 2017-08-28
      相关资源
      最近更新 更多