问题标签 [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.
reactjs - React.js 单元测试点击事件与 Enzyme 和 Sinon
我正在尝试将间谍附加到我的反应组件上的单击事件。我正在使用Enzyme with Mocha
,Chai
但无法通过以下测试:
这是我正在测试的组件:
这是单击跨度时调用的函数:
提前感谢您对此提供的任何帮助。我还应该提到,测试没有通过,说明它期望为真,但发现为假。
reactjs - 我如何检查哪些孩子被传递给酶和摩卡的反应成分?
假设我有以下组件实例:
的渲染方法是Expand
这样的:
我想断言第一个 Expand 实例的内容组件类型是ComponentReference1
,而第二个实例的内容组件类型是ComponentReference2
.
如何查看发送的孩子?难道我做错了什么?
提前致谢!
reactjs - 使用酶测试 React 组件时使用哪个 html 属性来选择节点
我正在使用 Enzyme 对反应组件进行单元测试,并且我试图找出使用什么 html 属性来装饰节点,并提供足够的信息让我在测试中选择它们。出于几个原因,我对使用 className 犹豫不决。首先,如果我设置了一个 className,它意味着该节点有一些特定的样式,并且在我的测试中的许多情况下,我只需要一种方法来选择节点并声明一些关于它的东西。其次,我使用 CSS 模块,所以设置全局类名只是为了支持单元测试感觉不对。class
人们用于向节点添加任意信息的属性是否有一个很好的替代方案?
javascript - 在 React 组件中测试 fetch() 方法
我有一个 App 组件负责渲染子输入组件,它还负责通过名为channelSearch
. 我已尝试遵守此处概述的建议的最佳实践,以使用 React 使用 ajax/fetch。
该方法通过 props 向下传递并通过回调调用。
注意 fetch 方法实际上是 isomorphic-fetch。
我目前正在尝试为该channelSearch
方法编写测试。我目前正在对 DOM 中mount
的整个<App>
组件使用酶和 jsdom。找到带有回调的子节点,模拟单击(应该触发回调)并检查组件的状态是否已更改。但是,这似乎不起作用。
我也尝试过直接调用该方法,但是,我遇到了this.state
未定义的问题。
我真的迷路了,我不确定方法本身是否写得不好,或者我没有使用正确的工具来完成这项工作。任何指导将不胜感激。
更新#1:
我按照评论中的建议包含了 nock,现在测试看起来像这样:
这似乎仍然没有改变组件的状态。
unit-testing - 测试 React 组件是否包含带有酶的 html 节点的最简单方法是什么?
当单元测试反应组件时,我经常根据道具的存在或内容检查子节点的存在。
使用酶,我找到在.find
浅包装或安装包装上使用的元素,然后检查其长度是否为 1。使用 chai,这将如下所示:
有没有更好的检查方法
javascript - 运行反应测试的错误:Enzyme、Jest 和 React
运行我的测试时收到此错误:
被测组件:
单元测试:
包.json:
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
这提供CustomComponent
了intl
它所要求的上下文。但是,当尝试执行以下测试断言时:
引发以下异常:
AssertionError: expected undefined to equal ''
这当然是因为它试图读取的状态IntlProvider
而不是我们的CustomComponent
.
尝试访问CustomComponent
我尝试了以下方法无济于事:
问题是:我们如何在安装CustomComponent
上下文的intl
同时仍然能够对我们的 执行“root”操作CustomComponent
?
unit-testing - React + Mocha + Enzyme i + Webpack 中的单元测试 - 如何忽略导入的文件?
我正在尝试在 Mocha & Enzyme 的前端对 React 进行单元测试。当 Mocha 进入应用程序文件并解析 import 语句时,测试停止:
我能够在 package.json 测试命令中忽略 .css 和 .scss 文件:
我不清楚如何忽略这些导入文件,以及我是否以错误的方式进行处理。(我在 Stack Overflow 中找到了忽略样式的解决方案,但不是这样的。
我得到的错误:
单元测试新手,任何帮助表示赞赏。
更新:// babelrc
script/run.sh 指向一个测试帮助文件:
我不完全确定帮助文件的效果如何,因为后端团队成员将它放在一起进行单元测试 - 但它看起来很有希望。
谢谢你的时间。
javascript - 如何在浏览器中使用酶示例 mocha 创建的组件反应?
我可以在网络浏览器中使用https://github.com/lelandrichardson/enzyme-example-mocha/blob/master/src/Foo.js吗?
我尝试但是,babel 用未定义的单词创建 js。
生成的示例代码:Object.defineProperty(exports, "__esModule", { value: true });
消息:ReferenceError:未定义导出