当前位置: 首页 > 面试题库 >

如何在Cypress测试中公开/访问Redux等数据存储?

翟英达
2023-03-14
问题内容

该赛普拉斯文档说可以

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

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

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

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

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

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

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

谢谢!


问题答案:

根据有关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' })
  );

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



 类似资料:
  • 问题内容: 我只是做一个简单的应用程序来学习与redux异步。我已经使所有工作正常进行,现在我只想在网页上显示实际状态。现在,我实际上如何在render方法中访问商店的状态? 这是我的代码(所有内容都在一页中,因为我只是在学习): 因此,在状态的render方法中,我想列出商店中的所有内容。 谢谢 问题答案: 您应该创建单独的组件,该组件将侦听状态更改并在每次状态更改时进行更新:

  • 我只是做了一个简单的应用程序学习异步与Redux。我已经使所有的工作,现在我只想显示的实际状态到网页上。现在,我如何在render方法中实际访问存储的状态? 这里是我的代码(所有内容都在一个页面中,因为我只是在学习): 谢谢

  • 我已经在Centos远程服务器上安装并设置了Rabbitmq。后来,我创建了一个文件“rabbitmq.config”,并添加了以下代码行 [{rabbit,[{loopback_users,[]}]}]

  • 问题内容: 我有一个化简器,为了计算新状态,我需要操作中的数据以及该化简器未管理的部分状态数据。具体来说,在下面将显示的减速器中,我需要访问该字段。 initialState.js: FormsReducer.js: index.js(根减速器): 如何访问此字段? 问题答案: 我将为此使用thunk,这是一个示例: 基本上,您会获得操作所需的所有数据,然后可以将该数据发送到减速器。

  • 问题内容: 我在C#mvc控制器中有以下代码: 如何在ControllerTest中访问我的Json“错误”字段以检查其是否为null? 是我想做的。有任何想法吗?谢谢。 问题答案: 您可以这样使用- 结果将是预期的对象定义。因此,在成功的情况下,您的成功标志将为TRUE,否则为false,如果为false,那么您应该期望error属性将随错误消息更新。

  • 问题内容: 我只有一个组件,试图使用来保存状态。在index.js中,我只为组件设置存储。 index.js 我有这种方法可以将状态映射到props中,该props在内部。 App.js 到目前为止一切都很好,现在我不确定如何在另一个组件中访问? 如果要访问另一个组件,我需要在第二个组件中进行哪些更改? 问题答案: 使用提供程序时,作为提供程序高阶组件的子级的任何组件都可以通过使用功能来访问商店属