如何在赛普拉斯测试中公开/访问Redux之类的数据存储?

Sup*_*mon 4 testing reactjs redux react-redux cypress

赛普拉斯文档说可以

公开数据存储区(例如Redux中的数据存储区),以便您可以通过编程方式直接从测试代码中更改应用程序的状态。

我还观看了Kent C. Dodds先生的测试课程,他提到可以使用Cypress中的现有数据来初始化redux存储(在测试之前或之中,不确定)

我浏览了几乎所有的文档并进行了谷歌搜索,除了在介绍页面上将其作为关键区别之一外,我只是找不到任何实际执行此操作的参考或示例。

如果可能的话,如何实现这样的目标?

我感兴趣的案例是E2E测试:

  • 首先,我将身份验证/登录功能作为标准的E2E测试进行测试
  • 然后,为了测试应用程序的其他部分,我将添加一个赛普拉斯命令,该命令将在需要登录时直接进行身份验证调用并从响应中设置存储(与注销相同),而不是手动输入凭据&单击登录(这可能最终还是我要做的)

这可能不是最佳用例(甚至是一个很好的用例),但是我敢肯定,在其他情况下,至少使用一些数据初始化redux状态会非常方便。

谢谢!

euZ*_*ebe 9

根据有关Vuex的答案,我做到了,该方法有效:

// after createStore(...)
if (window.Cypress) {
  window.__store__ = store;
}

// in cypress tests
cy.window().should('have.property', '__store__');
cy.window().its('__store__')
  .then(
    store => store.dispatch({ type: 'UPDATE_CURRENT_PROFILE' })
  );
Run Code Online (Sandbox Code Playgroud)

cy.visit('anyRoute')在对存储执行任何操作之前,请不要忘记这样做,以便在您尝试访问它时启动React应用并已创建redux存储。