问题标签 [enzyme]

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 回答
4101 浏览

reactjs - React.js 单元测试点击事件与 Enzyme 和 Sinon

我正在尝试将间谍附加到我的反应组件上的单击事件。我正在使用Enzyme with MochaChai但无法通过以下测试:

这是我正在测试的组件:

这是单击跨度时调用的函数:

提前感谢您对此提供的任何帮助。我还应该提到,测试没有通过,说明它期望为真,但发现为假。

0 投票
0 回答
1487 浏览

reactjs - 我如何检查哪些孩子被传递给酶和摩卡的反应成分?

假设我有以下组件实例:

的渲染方法是Expand这样的:

我想断言第一个 Expand 实例的内容组件类型是ComponentReference1,而第二个实例的内容组件类型是ComponentReference2.

如何查看发送的孩子?难道我做错了什么?

提前致谢!

0 投票
1 回答
82 浏览

reactjs - 使用酶测试 React 组件时使用哪个 html 属性来选择节点

我正在使用 Enzyme 对反应组件进行单元测试,并且我试图找出使用什么 html 属性来装饰节点,并提供足够的信息让我在测试中选择它们。出于几个原因,我对使用 className 犹豫不决。首先,如果我设置了一个 className,它意味着该节点有一些特定的样式,并且在我的测试中的许多情况下,我只需要一种方法来选择节点并声明一些关于它的东西。其次,我使用 CSS 模块,所以设置全局类名只是为了支持单元测试感觉不对。class人们用于向节点添加任意信息的属性是否有一个很好的替代方案?

0 投票
3 回答
3565 浏览

javascript - 在 React 组件中测试 fetch() 方法

我有一个 App 组件负责渲染子输入组件,它还负责通过名为channelSearch. 我已尝试遵守此处概述的建议的最佳实践,以使用 React 使用 ajax/fetch。

该方法通过 props 向下传递并通过回调调用。

注意 fetch 方法实际上是 isomorphic-fetch。

我目前正在尝试为该channelSearch方法编写测试。我目前正在对 DOM 中mount的整个<App>组件使用酶和 jsdom。找到带有回调的子节点,模拟单击(应该触发回调)并检查组件的状态是否已更改。但是,这似乎不起作用。

我也尝试过直接调用该方法,但是,我遇到了this.state未定义的问题。

我真的迷路了,我不确定方法本身是否写得不好,或者我没有使用正确的工具来完成这项工作。任何指导将不胜感激。

更新#1:

我按照评论中的建议包含了 nock,现在测试看起来像这样:

这似乎仍然没有改变组件的状态。

0 投票
3 回答
7046 浏览

unit-testing - 测试 React 组件是否包含带有酶的 html 节点的最简单方法是什么?

当单元测试反应组件时,我经常根据道具的存在或内容检查子节点的存在。

使用酶,我找到在.find浅包装或安装包装上使用的元素,然后检查其长度是否为 1。使用 chai,这将如下所示:

有没有更好的检查方法

0 投票
3 回答
7407 浏览

unit-testing - 用酶测试 react-intl 组件

我已经研究了 react-intl 的建议,但它没有留下任何关于酵素的明确文档。

这就是我一直在尝试编写测试的方式。

但我不断收到错误

不变违规:[React Intl] 找不到所需intl的对象。需要存在于组件祖先中。

我查看了他们的仓库,他们似乎已经使它与“react-addons-test-utils”一起工作。

难道我做错了什么?

0 投票
1 回答
573 浏览

javascript - 运行反应测试的错误:Enzyme、Jest 和 React

运行我的测试时收到此错误:

被测组件:

单元测试:

包.json:

0 投票
1 回答
15366 浏览

reactjs - 将 react-intl 对象注入到已安装的 Enzyme 组件中进行测试

编辑:解决了!向下滚动寻找答案


在我们的组件测试中,我们需要它们能够访问react-intl上下文。问题是我们在没有父包装器的情况下安装单个组件(使用 Enzyme's mount()) 。<IntlProvider />这可以通过将提供者包裹起来但随后root指向IntlProvider实例而不是指向来解决CustomComponent

使用React-Intl 进行测试:酶文档仍然是空的。

<自定义组件 />


标准测试用例(所需)(Enzyme + Mocha + Chai)

但是,由于我们的组件FormattedMessage用作库的一部分,因此react-intl在运行上述代码时会出现此错误:

Uncaught Invariant Violation: [React Intl] Could not find required `intl` object. <IntlProvider> needs to exist in the component ancestry.


用它包裹起来IntlProvider

这提供CustomComponentintl它所要求的上下文。但是,当尝试执行以下测试断言时:

引发以下异常:

AssertionError: expected undefined to equal ''

这当然是因为它试图读取的状态IntlProvider而不是我们的CustomComponent.


尝试访问CustomComponent

我尝试了以下方法无济于事:


问题是:我们如何在安装CustomComponent上下文的intl同时仍然能够对我们的 执行“root”操作CustomComponent

0 投票
0 回答
1013 浏览

unit-testing - React + Mocha + Enzyme i + Webpack 中的单元测试 - 如何忽略导入的文件?

我正在尝试在 Mocha & Enzyme 的前端对 React 进行单元测试。当 Mocha 进入应用程序文件并解析 import 语句时,测试停止:

我能够在 package.json 测试命令中忽略 .css 和 .scss 文件:

我不清楚如何忽略这些导入文件,以及我是否以错误的方式进行处理。(我在 Stack Overflow 中找到了忽略样式的解决方案,但不是这样的。

我得到的错误:

单元测试新手,任何帮助表示赞赏。

更新:// babelrc

script/run.sh 指向一个测试帮助文件:

我不完全确定帮助文件的效果如何,因为后端团队成员将它放在一起进行单元测试 - 但它看起来很有希望。

谢谢你的时间。

0 投票
1 回答
515 浏览

javascript - 如何在浏览器中使用酶示例 mocha 创建的组件反应?

我可以在网络浏览器中使用https://github.com/lelandrichardson/enzyme-example-mocha/blob/master/src/Foo.js吗?

我尝试但是,babel 用未定义的单词创建 js。

生成的示例代码:Object.defineProperty(exports, "__esModule", { value: true });

消息:ReferenceError:未定义导出