问题标签 [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 投票
21 回答
164257 浏览

javascript - 如何在 Jest 中设置模拟日期?

我正在使用 moment.js 在我的 React 组件的帮助文件中执行大部分日期逻辑,但我无法弄清楚如何在 Jest a la 中模拟日期sinon.useFakeTimers()

Jest 文档仅谈论诸如 等的计时器功能setTimeoutsetInterval但无助于设置日期,然后检查我的日期功能是否完成了它们应做的事情。

这是我的一些 JS 文件:

这是我使用 Jest 设置的:

现在这些测试通过了,因为我正在使用 moment 并且我的函数使用 moment 但它似乎有点不稳定,我想将日期设置为测试的固定时间。

关于如何实现的任何想法?

0 投票
3 回答
7699 浏览

react-native - 如何在 React Native 中使用 Jest

React Native 文档的测试部分建议 Jest 是进行单元测试的官方方式。但是,他们没有解释如何设置它。在没有任何设置的情况下运行 Jest 会出现语法错误(没有行号 :( ),因为它没有应用 React Native 代码倾向于使用的转换(例如 ES6 功能、JSX 和 Flow)。React Native 源代码中有一个jestSupport文件夹尝试包含一个env.jsand scriptPrerocess.js,后者具有应用转换的代码.所以我已经将它们复制到我的项目中并将以下部分添加到我的 package.json 中:

这修复了第一个错误,但我仍然收到以下错误:

为了让 Jest 理解 React Native,我还需要做更多的事情吗?是否有任何用于测试 React Native 的 Jest 设置示例?

编辑:

有一个检查scriptPreprocess阻止它运行任何文件,node_modules其中当然包括整个 React Native。删除它可以修复上述错误。但是,我现在从 React Native 源代码中得到了更多的错误,看起来它绝对不是要在 Jest 中运行。

编辑2:

显式设置react-native模块的模拟工作:

这似乎将是非常手动的,并且对于测试与 React Native API 交互很多的代码不是很有用。我肯定还是觉得我错过了什么!

0 投票
0 回答
86 浏览

jestjs - Jest 模块搜索路径

我已经设置 Browserify 来查找/node_modules以及 中的模块/js,但 Jest 不喜欢这样。有没有办法配置 Jest 的模块搜索路径?

0 投票
2 回答
1799 浏览

reactjs - 如何在 Flux/React 中测试动作?

我试图弄清楚如何测试不断变化的动作。使用提供的示例,商店很简单,但是对于操作/数据/api 层似乎没有任何内容。

在我的特定应用程序中,我需要在将某些内容发布到我的服务器之前对其进行预处理。根据这篇文章中的建议,我决定在我的操作中实现异步内容。我不知道如何测试这种预处理。

例如在 MissionActions.js 中:

在此函数中,我将股票任务 (bankMission) 转换为常规任务,并使用正确的订单密钥将其保存到游戏中。然后我将这个新的常规任务发布到我的服务器,其回调在我的 MissionStore 中处理。

由于这个转换代码很重要,我想为它写一个测试,但不知道怎么做,因为似乎只有测试商店和 React 组件的示例。有什么建议么?

0 投票
1 回答
973 浏览

unit-testing - 用事件反应开玩笑单元测试子组件

如果我有一个具有 onclick 事件的子组件,该事件又调用父事件处理程序,那么对此进行单元测试的最佳方法是什么?在我的例子中,当用户点击它时,按钮的文本值会发生变化——这是在 this.props.myEvent 中处理的。

我的单元测试在测试初始值时有效

,但是当用户单击按钮并将按钮值更新为某个值时,如何创建单元测试?

就我而言,我有一个按钮:

谢谢

0 投票
1 回答
565 浏览

browserify - 如何在 Jest 中测试使用 browserify-shim global 的文件?

我正在通过脚本标签下载谷歌地图 API v3,并使用以下(相关) package.json配置将依赖项添加到我的模块中:

我可以使用以下内容在我的文件中添加依赖项:

当我在浏览器中运行我的代码时,它工作正常。问题是,当我用 Jest 运行测试时,它告诉我找不到“google”模块:

笔记:

我正在测试的文件中需要这种依赖关系,而不是测试本身。我觉得这很令人困惑,因为我认为 Jest 会模拟所有依赖项,除非另有说明,但据我所知,它首先需要在模拟之前正确满足依赖项。

关于我缺少什么或应该采取什么方法的任何想法?

0 投票
1 回答
1256 浏览

reactjs - 如何模拟另一个文件中的返回值?

我正在测试一个不断变化的动作文件,似乎无法弄清楚如何在其中模拟返回值。

当我在测试文件中为模拟模块指定返回值(参见下面的代码)时,一切正常,但是当在我正在测试的模块中调用相同的函数时,它出现为未定义。

还有正在测试的 MissionActions.js。

我对 API 和自动模拟的解释是,在模拟模块(在本例中为 GameStore)上设置 mockReturnValue 适用于整个测试,而不仅仅是在测试文件中。

我将如何模拟 GameStore.getGame() 方法以便它也适用于 MissionActions.js?

0 投票
1 回答
5796 浏览

reactjs - 如何将Child附加到开玩笑测试DOM中正确位置的反应组件

我有一个由包装器 div 和内部复选框组成的反应组件,这是渲染函数:

componentDidMount我将这个复选框换成一个将充当复选框的 div 时,这里是componentDidMount函数;

当在屏幕上渲染它时,空的 div 被添加到组件中并且一切正常。

在我的玩笑测试中,我尝试了这个;

但是这个数组的长度是 1,只带回 id 为“wrapperDiv”的 div,看起来好像它没有将 checkboxDiv 添加到 DOM。但是,当我在测试中尝试这个时;

它带回了wrapperDivcheckboxDiv

是否有原因它没有在组件中添加 div,或者测试中是否需要额外的步骤?

0 投票
2 回答
676 浏览

reactjs - 在节点 0.12.0 上运行 jest 时出错

我正在尝试在我的项目中运行 Jest 测试并且我有节点 v0.12.0 ,所以运行 Jest 测试会给我以下错误:

/Users/ajaybeniwal203/ODeskWork/ui-components/node_modules/jest-cli/node_modules/harmonize/harmonize.js:31 node.stdout.pipe(process.stdout);

TypeError:无法读取 module.exports 处未定义的属性“管道”(/Users/ajaybeniwal203/ODeskWork/ui-components/node_modules/jest-cli/node_modules/harmonize/harmonize.js:31:20

Object.<anonymous>( /Users/ajaybeniwal203/ODeskWork/ui-components/node_modules/jest-cli/bin/jest.js:39:1 ) 在 Module._compile (module.js:460:26)

在 Object.Module._extensions..js (module.js:478:10)

在 Module.load (module.js:355:32)

在 Function.Module._load (module.js:310:12)

在 Function.Module.runMain (module.js:501:10)

启动时 (node.js:129:16)

在 node.js:814:3 npm 错误!测试失败。

有关更多详细信息,请参见上文。

我该如何解决这个问题?

0 投票
1 回答
2858 浏览

javascript - 如何断言属性的渲染值?

我是React的新手,将Jest视为一种潜在的单元测试解决方案。但是,我发现很难找出如何简单地在ReactComponent. 我不确定这是否是因为通常的做法是不渲染并查看实际值,或者我只是还没有找到一个好的例子。

所以,这就是我正在使用的:

标签组件:

开玩笑测试:

所以,正如你所看到的,我不确定这里的期望断言。我希望该值foobar呈现在正确的元素中。然后,我可以确保props绑定是正确的。label是一个ReactComponent,我看到许多可用的属性和方法。查看和测试将呈现的实际值的最佳方法是什么?