问题标签 [jestjs]

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 投票
2 回答
29452 浏览

javascript - 用 Jest 测试一个 React 组件函数

原来的

首先,我遵循Flux架构。

我有一个显示秒数的指示器,例如:30 秒。每隔一秒,它显示的时间会减少 1 秒,所以从 29、28、27 到 0。当到达 0 时,我清除间隔,使其停止重复。此外,我触发了一个动作。当此操作被发送时,我的商店会通知我。所以当这种情况发生时,我将间隔重置为 30 秒,依此类推。组件看起来像:

组件按预期工作。现在,我想用 Jest 测试它。我知道我可以使用 renderIntoDocument,然后我可以 setTimeout of 30s 并检查我的 component.state.elapsed 是否等于 0(例如)。

但是,我想在这里测试的是不同的东西。我想测试是否调用了刷新功能。此外,我想测试当我的经过状态为 0 时,它会触发我的 TriggerAnAction()。好的,对于我尝试做的第一件事:

但是我在编写 npm test 时收到以下错误:

我从 ReactTestUtils 看到了一个mockComponent函数,但给出了它的解释,我不确定它是否是我需要的。

好的,在这一点上,我被卡住了。谁能告诉我如何测试我上面提到的两件事?


更新 1,基于伊恩的回答

这就是我要运行的测试(请参阅某些行中的注释):

我还是误会了什么……

0 投票
1 回答
1622 浏览

javascript - 如何在没有 Browserify 的情况下测试 React 组件

我有一个不使用browserify工具的反应应用程序。这意味着该React变量是由在<head>.

实现这个组件后,我想为它创建一个测试。我查看了Jest 文档并创建了组件测试。

Jest 文档示例中,组件及其测试都使用该require函数来获取React变量。

有没有办法将React变量暴露到组件中?或者有必要使用 browserify 来创建这个测试?

0 投票
6 回答
27579 浏览

reactjs - 如何通过 Jest 测试 React PropTypes?

我正在为我的 React 代码编写 Jest 测试,并希望利用/测试 PropType 检查。我对 Javascript 世界很陌生。我正在使用 npm 安装react-0.11.2并有一个简单的:

在我的测试中。我的测试看起来与 jest/react 教程示例非常相似,代码如下:

但是,似乎EventCell没有触发组件中的 PropType 检查。我知道检查只在开发模式下运行,但后来我也认为react通过 npm 给了你开发版本。当我使用 watchify 构建组件时,检查会在我的浏览器中触发。

我错过了什么?

0 投票
2 回答
1711 浏览

javascript - JestJs 认为没有调用 ajax

我在进行简单的笑话测试时遇到了很多麻烦。Jest 坚持说我的 Ajax 调用没有发生,并带有错误消息:

被测试的代码在一个名为 auth.jsx 的文件中,它看起来像这样:

测试看起来像这样:

知道为什么 jest 会认为这没有被调用吗?我一直在环顾四周,似乎在 dontMock() 和 mock() 方面存在一些错误。

0 投票
1 回答
827 浏览

javascript - 为什么 React 需要 jsdom 进行测试?

在为 React 组件编写测试时,您必须将它们渲染到 DOM 中,以便断言它们的正确性。例如,如果您想测试某个类是否添加到给定状态的节点,您必须渲染到 DOM 节点,然后通过普通 DOM API 检查该 DOM 节点。

问题是,考虑到 React 维护一个它渲染的虚拟 DOM,为什么我们不能在组件渲染后就断言虚拟 DOM 呢?在我看来,这似乎是拥有虚拟 DOM 之类的一个很好的理由。

我错过了什么吗?

0 投票
0 回答
1075 浏览

javascript - 在 Mocha JS (ala Jest) 中自动模拟模块

我一直在享受 Jest用于测试我的 ReactJS 组件的自动模拟。但是 Jest 是一个非常新的测试工具,它缺少许多基本功能,例如在浏览器中运行测试的能力。目前还不清楚它是否正在积极开发中。

是否可以使用 Mocha JS 获得 Jest 的默认模拟行为?需要明确的是,我想要的是每个require语句都返回一个底层模块的模拟,除非我特别说不要模拟那个模块。

0 投票
2 回答
9919 浏览

unit-testing - 如何测试一个 React 组件是否包含另一个带有玩笑的组件?

我正在尝试使用 jest-cli 来测试一个反应组件是否在其输出中包含另一个组件。我很难弄清楚如何做到这一点。

这是我的组件:

设计器页面组件

顶栏组件

现在,我想测试 DesignerPage 组件是否包含 TopBar 组件。这是我认为应该起作用的:

但它没有通过...... :(

0 投票
1 回答
5414 浏览

javascript - 使用 Jest 和 React JS TestUtils 测试表单

我有一个带有 3 个单选按钮的表单,如下所示(假名):

而且我很难尝试测试 onChange 和 onSubmit 事件。

我有一个像这样的测试:

除了应该调用的函数 (MyComponent.change) 之外,它是有效的,但它不是。

我还对 onSubmit 进行了一项测试:

注意: MyComponent.insideDone 是一个由“done”函数调用的函数。

这也失败了。我很确定这里的问题是我没有以正确的方式模拟事件。但是,我没有找到使用 React 中的 Jest 和 TestUtils 的示例。

0 投票
0 回答
470 浏览

javascript - 在 node.js 中自动生成存根模块

我正在将我的 JavaScript 测试代码从 Jest 移动到 Mocha。Jest 的一个不错的特性是它会自动为您的模块生成存根。这些存根实现与原始存根相同的 API,但它们的所有函数都返回undefined. 导出的类也被存根,即它们具有与原始类相同的方法,但返回未定义:

由于各种原因,我正在转向 MochaJS,但我想保留这种存根行为。我可以使用 proxyquire 为模块注入存根。但我需要自己定义存根。

我想要的是一个函数,它接受一个 Node 模块并返回类似于模块的 Jest 自动模拟版本的东西。Jest 的代码在moduleMocker.js中。我已经编写了一些自己的代码来做到这一点(包括在下面)。但这很棘手,感觉不像我应该写的代码。

有这样做的标准库吗?

这是我写的:

0 投票
1 回答
1444 浏览

javascript - 使用 TestUtils.Simulate 在输入元素上创建更改事件时遇到问题

我正在尝试为“Thinking in React”(http://facebook.github.io/react/docs/thinking-in-react.html)中显示的示例编写测试

而且我很难使用 TestUtils.Simulate 为搜索输入对象提供更改事件。

有人有建议吗?我是否错误地使用了 Testutils.Simulate?