问题标签 [reactjs-testutils]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1190 浏览

reactjs - 我得到 TypeError: Cannot read property 'then' of undefined 当我尝试测试异步操作时

我在 reactjs 中测试我的异步操作时遇到问题。这是我的代码:

所以我的 asnc 调用在一个未导出的函数中,并且有一个函数在 for 循环中调用这个 asnc 函数。

现在这是我的测试:

现在的问题是运行测试时我得到:

知道如何解决这个问题吗?

0 投票
2 回答
539 浏览

reactjs - 模拟在另一个函数中使用的函数

我正在为 react redux 中的异步操作编写测试,为了解决我在此处简化代码的问题。这是我的动作功能:

所以问题是函数 getLoginStatusUrl() 会在 cookie 中进行几次检查并根据某些条件返回适当的 url。所以我想要模拟这个函数以返回例如 test.com 然后我可以测试我的操作如下:

在这种情况下,如何模拟 getLoginStatusUrl() 以返回 test.com?

0 投票
1 回答
16 浏览

jquery - 将 react 的 testutils 与 jquery 元素一起使用

我正在尝试测试反应页面。使用.trigger("input", {which: 65})似乎不会调用 SyntheticEvent。所以我想知道是否有可能以某种方式将 jQuery 和.simulatetestUtils 结合起来?

基本上,我正在尝试做类似的事情

0 投票
1 回答
482 浏览

reactjs - ReactTestUtils Simulate.Change 参数类型 SyntheticEventData 错误

下面的代码是用 typescript 编写的,它使用“react-dom/test-utils”中的 ReactTestUtils。

它工作正常,当我放置该as any铸件时,结果与预期一致。如果我删除铸件,则会发生此错误:

[ts] 类型参数 '{ target: { value: string; }; }' 不可分配给“SyntheticEventData”类型的参数。属性“目标”的类型不兼容。输入'{值:字符串;}' 不可分配给类型 'EventTarget'。对象字面量只能指定已知属性,而“值”不存在于“EventTarget”类型中。

这是Simulate.change我从中得到的智能感知@types/react-dom (version: ^15.5.4)

SyntheticEventData接口的声明中,我发现target属性的类型是JavascriptEventTarget

由于代码在我进行as any强制转换时按预期工作,所以我不太明白这个EventTarget界面是如何工作的。

各位大佬知道去除掉色块的方法as any吗?因为如果可能的话,我想尽量减少any代码中的任何内容。我想让代码强类型。

0 投票
0 回答
34 浏览

reactjs - 为测试目的翻译 dom in react

大家好,我有一个问题想问任何可以提供帮助的人。是否有任何辅助函数可以将 document.body 转换为 React 结构并像 getElementBy.. 一样访问它?所以我可以通过 React Names 而不是 classNames 或 TagNames 访问各个组件?

已经实现的代码示例如下所示:

我使用 document.body.getEmentsByTagName 是因为该组件在已安装组件之外呈现。

0 投票
0 回答
203 浏览

reactjs - React test-utils scryRenderedDOMComponentsWith* 不遍历嵌套组件

测试组件有问题。我有一个Voting渲染组件的Vote组件,该Vote组件渲染两个<button>标签。使用 mocha+chai 和 react-dom/test-utils 库,渲染到 jsdom,我想测试两个按钮是否被渲染。当我调用 时scryRenderedDOMComponentsWithTag(component, 'button'),传入子 Vote 组件,它返回一个带有两个按钮的集合,但如果我传递父组件(见下文),它返回空。我玩过其他scryRenderedDOMComponentsWith*方法和相同的结果。浏览器中的视觉检查显示按钮肯定正在呈现。scryRenderedDOMComponentsWith*函数不会向下遍历到componentTreearg的子代吗?还是我做错了什么?

投票.js

投票.js

投票.spec.js

测试输出

仅供参考,这是基于全栈 Redux 教程(http://teropa.info/blog/2015/09/10/full-stack-redux-tutorial.html),我一直在按照需要进行更改以使用当前的 API、模式和库。我已删除逻辑以简化此处的代码。在教程示例中,父投票组件通过renderIntoDocument. scryRenderedDOMComponentsWithTag在示例测试中将父Voting组件作为其componentTreearg,并找到由子组件呈现的按钮Vote- 所以我期望它在探查时应该遍历嵌套组件。

0 投票
0 回答
155 浏览

reactjs-testutils - 使用酶的 React 组件的单元测试用例

我正在研究 reactjs 5.X 版本。我正在用酶写 UT。下面是我的带有 prop 参数的可重用组件。无法在 const 组件中找到 div 标签。您能帮我如何使用类名获取 div 标签或使用 find 函数获取 div 标签。

0 投票
1 回答
965 浏览

reactjs - reactjs / jest:无法使用 MockedProvider 用数据填充 react-apollo 组件?

我编写了简单的 react-apollo 组件,它使用 graphql 查询从模式中检索数据。在执行组件上工作正常,但是,当我使用 jest 框架和 MockedProvider(即 react-apollo/test-utils 的组件)为这个组件编写测试用例时。我无法用数据填充组件。我曾在 MockedProvider 上引用过这篇文章:https ://paradite.com/2017/11/16/test-react-apollo-components-enzyme-examples/

我的组件和测试脚本如下:

//MyComponent.test.js

0 投票
1 回答
301 浏览

reactjs - 如何使用 Karma 和 React 16.2.0 修复此错误?

我有这个 Karma 配置(使用 React 16.2.0):

我收到以下控制台错误:

{ "message": "Uncaught ReferenceError: addons is not defined\nat test/allTests.js:81672:8\n\nReferenceError: addons is not defined\n
at Object.defineProperty.value (test/allTests.js:84455: 18)\n 在 webpack_require (test/allTests.js:20:30)\n 在 test/allTests.js:81668:20\n 在 Object.defineProperty.value (test/allTests.js:81732:6)\n在webpack_require (test/allTests.js:20:30)\n 在 Object. (test/allTests.js:79742:21)\n 在 Object. (test/allTests.js:80112:31)\n 在webpack_require ( test/allTests.js:20:30)\n 在 Object. (test/allTests.js:77771:15)\n 在webpack_require (test/allTests.js:20:30)", "str": "Uncaught ReferenceError: addons is not defined\nat test/allTests.js:81672:8\n\nReferenceError: addons is not defined\n
at Object. defineProperty.value (test/allTests.js:84455:18)\n 在 webpack_require (test/allTests.js:20:30)\n 在 test/allTests.js:81668:20\n 在 Object.defineProperty.value ( test/allTests.js:81732:6)\n 在webpack_require (test/allTests.js:20:30)\n 在 Object. (test/allTests.js:79742:21)\n 在对象。(test/allTests.js:80112:31)\n 在webpack_require (test/allTests.js:20:30)\n 在 Object. (test/allTests.js:77771:15)\n 在webpack_require (test/allTests.js:20:30)" }

这个错误的根源是什么?

0 投票
1 回答
10812 浏览

reactjs - React 测试按钮属性禁用

我无法为按钮属性编写正确的测试用例disable。我使用TestUtils来自react-addons-test-utils.

我有非常简单的组件:

我想编写测试来检查按钮是否被给定的道具禁用或未被禁用。测试如下所示:

而且这种测试的实现不起作用。第一次测试通过但第二次失败。

但是当 propTypes 设置为disabled: false而不是disabled: () => false两个测试都成功时。

问题是为什么测试是成功的,当函数disabled是一个等于 false 的布尔常量值并且当disabled一个函数返回时不起作用false

失败测试日志:

期望(收到).toEqual(期望)