问题标签 [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+enzyme 选择元素文本
正是它所说的。一些示例代码:
该html
方法还返回元素的内容以及元素本身以及所有属性,例如它给出的<button class='btn btn-primary'>OK</button>
。所以我想,最坏的情况,我可以调用html
它并对其进行正则表达式,但是......
有没有办法只获取元素的内容,所以我可以断言它。
javascript - 使用 Enzyme/Mocha 进行反应测试 - 未定义音频
我正在尝试为我的反应应用程序构建一个测试套件。应用程序中的组件使用Audio
:
它在浏览器中有效,但据此,不在 node.js 上。因此,当我使用酶尝试渲染组件时,会出现错误:
我是测试新手,但有没有办法解决这个问题?我可以以某种方式模拟一个对象来Audio
代替吗?我是 font-end/javascript 单元测试的新手,所以我仍在尝试学习技巧。
javascript - React Enzyme - 测试 `componentDidMount` 异步调用
每个人。
在componentDidMount
.
这是我的组件代码:
现在,我在测试文件中做了什么(我有一个由 Mocha + Chai + Sinon 组成的设置,一切正常):
update()
即使我调用包装器,状态也不会更新。长度仍为 0。我在这里遗漏了什么吗?我是否需要以另一种方式模拟服务器响应?
谢谢你的帮助!
reactjs - Enzyme/Mocha:如何通过从子组件触发 onChange 事件来测试反应组件功能
我正在使用酶/摩卡咖啡来测试我的反应成分。
我有一个正在测试的父组件。
这个父组件在它的渲染函数中有一个子组件
我希望孩子的 onChange 函数触发,以便我可以测试我父母的 foo 函数。
到目前为止,我还没有找到办法做到这一点——我读过关于 sinon 和 stubbing 的文章,但这主要是关于拦截函数而不是触发它们。
下面的测试
是一个弱测试,因为它不会测试连接我的孩子和父母的代码行,并且如果我没有为我的孩子编写单元测试,它也不会测试孩子的 onChange 功能。恕我直言 - 如果将我的组件分解给父母/孩子意味着更少的可测试性 - 那么这个框架有问题
任何帮助将不胜感激,谢谢
javascript - 转译 JSX 以用于 InternJS 测试
我正在为我们的应用程序实施(或尝试实施)单元/功能测试,并希望使用InternJS作为带有酶测试实用程序的测试运行器。
要对我们的组件进行单元测试,需要对 JSX 进行转译。Intern 文档包含一个 React 示例,但随着 JSXTransformer 的弃用,该示例不再相关。
所以我尝试通过SystemJS 插件使用 Babel,systemjs-plugin-babel
并使用了推荐的loader
配置。
当我运行测试时,会发生以下错误:
从测试中删除 JSX 表明该错误与测试中的 JSX 有关。
是否可以使用 Intern 和 Enzyme 来测试 React 组件?如果是这样,您如何配置 Intern 以准备组件进行测试?
reactjs - 使用酶测试反应确认窗口
我在 React 中有一个按钮,当用户点击它时会打开一个简单的确认窗口。在我添加确认方法之前,下面的测试是绿色的。添加确认后它是红色的。我需要如何更改测试以使用附加确认?
反应删除按钮:
这是测试(使用酶):
javascript - 测试连接容器的实例方法
您好,我有一个连接的仪表板容器。它有一个孩子,它是一个连接的 redux-form。我想测试仪表板容器实例方法。我知道我可以将仪表板包装在 Provider 中以将商店传递给子组件。但是然后我无法访问 wrapper.instance().someInstanceMethod() (因为我将 Provider 安装为 root 而不再是仪表板。有没有人处理过这个问题并提出了解决方案?
根据我得到的错误消息,我可以明确地将商店作为道具传递,但这不起作用。也不是将它作为第二个参数传递给包装为上下文。也许我错过了一些东西。下面是一个不起作用的示例测试,但它给出了我试图做什么的总体思路。
javascript - 使用 Enzyme 的 React 单元测试不会重新绑定辅助函数的上下文
这是我在尝试使用 AirBnB 的 React 测试库Enzyme重构我的一些 React 组件时遇到的一个有趣的问题。
我认为解释我的问题的最好方法是通过一个例子。
这是一个小的 React 组件,它将根据从其父组件接收到的 props 显示一条消息:
测试.js:
这是该组件的测试套件,其中包含两个通过测试:
test.spec.js:
这可以正常工作,但 Test 组件的当前实现并没有达到应有的效率。通过使用.call(this)
,每次render()
调用函数时都会创建一个新函数。this
我可以通过在组件的构造函数中绑定正确的上下文来避免这种情况,如下所示:
进行此更改后,组件仍按预期工作,但测试开始失败:
我console.log(props.foo)
在构造函数中添加了一个,它确认构造函数在我期望的时候仍然被调用,并且它接收的道具是正确的。但是,我添加了一个console.log(foo)
inside renderInnerSpan
,并且看起来该值始终为 true,即使在重新渲染组件并将其foo
prop 明确设置为false
.
看起来renderInnerSpan
只绑定一次,Enzyme 在每次测试中都重复使用它。那么,什么给了?我正在测试中重新创建我的组件,它使用我期望的值调用它的构造函数 - 为什么我的绑定renderInnerSpan
函数继续使用旧值?
在此先感谢您的帮助。
testing - 酶测结果为 null 不是对象
我刚刚开始使用 Enzyme 和 React,我有点困惑。我有一个不需要 React 的简单测试通过。
src/containers/App/App.spec.js
:
npm test
现在我想对我的 App 组件进行基本测试,看看它是否呈现为一个 div [当我在浏览器中加载它时它会这样做]。这就是失败发生的地方。
src/containers/App/App.spec.js
:
npm test
我想知道是什么导致了null is not an object
错误。这让我觉得我们期待某物成为一个App
对象,但事实并非如此?
这是呈现浏览器的实际应用程序:
src/containers/App/App.js
src/app.js
仅供参考,我的package.json
javascript - 用酶测试 React Component className
在测试使用 className 使用酶(安装或浅)设置 css 类的反应组件时,我能够在它是 div 时正确测试,但无法让它在 h1 标签上工作。
这是一些
- 与安装或浅的事情有关?
- 这是我想念的东西吗?
- 它是一个错误吗?
任何想法表示赞赏!
JSX:
规格:
试验结果:
请注意调试日志,其中显示了带有 myheader 类的 h1,但测试失败,为 h1.myheader 找到零个元素