问题标签 [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.
javascript - 如何在 Jest 中设置模拟日期?
我正在使用 moment.js 在我的 React 组件的帮助文件中执行大部分日期逻辑,但我无法弄清楚如何在 Jest a la 中模拟日期sinon.useFakeTimers()
。
Jest 文档仅谈论诸如 等的计时器功能setTimeout
,setInterval
但无助于设置日期,然后检查我的日期功能是否完成了它们应做的事情。
这是我的一些 JS 文件:
这是我使用 Jest 设置的:
现在这些测试通过了,因为我正在使用 moment 并且我的函数使用 moment 但它似乎有点不稳定,我想将日期设置为测试的固定时间。
关于如何实现的任何想法?
react-native - 如何在 React Native 中使用 Jest
React Native 文档的测试部分建议 Jest 是进行单元测试的官方方式。但是,他们没有解释如何设置它。在没有任何设置的情况下运行 Jest 会出现语法错误(没有行号 :( ),因为它没有应用 React Native 代码倾向于使用的转换(例如 ES6 功能、JSX 和 Flow)。React Native 源代码中有一个jestSupport
文件夹尝试包含一个env.js
and scriptPrerocess.js
,后者具有应用转换的代码.所以我已经将它们复制到我的项目中并将以下部分添加到我的 package.json 中:
这修复了第一个错误,但我仍然收到以下错误:
为了让 Jest 理解 React Native,我还需要做更多的事情吗?是否有任何用于测试 React Native 的 Jest 设置示例?
编辑:
有一个检查scriptPreprocess
阻止它运行任何文件,node_modules
其中当然包括整个 React Native。删除它可以修复上述错误。但是,我现在从 React Native 源代码中得到了更多的错误,看起来它绝对不是要在 Jest 中运行。
编辑2:
显式设置react-native
模块的模拟工作:
这似乎将是非常手动的,并且对于测试与 React Native API 交互很多的代码不是很有用。我肯定还是觉得我错过了什么!
jestjs - Jest 模块搜索路径
我已经设置 Browserify 来查找/node_modules
以及 中的模块/js
,但 Jest 不喜欢这样。有没有办法配置 Jest 的模块搜索路径?
reactjs - 如何在 Flux/React 中测试动作?
我试图弄清楚如何测试不断变化的动作。使用提供的示例,商店很简单,但是对于操作/数据/api 层似乎没有任何内容。
在我的特定应用程序中,我需要在将某些内容发布到我的服务器之前对其进行预处理。根据这篇文章中的建议,我决定在我的操作中实现异步内容。我不知道如何测试这种预处理。
例如在 MissionActions.js 中:
在此函数中,我将股票任务 (bankMission) 转换为常规任务,并使用正确的订单密钥将其保存到游戏中。然后我将这个新的常规任务发布到我的服务器,其回调在我的 MissionStore 中处理。
由于这个转换代码很重要,我想为它写一个测试,但不知道怎么做,因为似乎只有测试商店和 React 组件的示例。有什么建议么?
unit-testing - 用事件反应开玩笑单元测试子组件
如果我有一个具有 onclick 事件的子组件,该事件又调用父事件处理程序,那么对此进行单元测试的最佳方法是什么?在我的例子中,当用户点击它时,按钮的文本值会发生变化——这是在 this.props.myEvent 中处理的。
我的单元测试在测试初始值时有效
,但是当用户单击按钮并将按钮值更新为某个值时,如何创建单元测试?
就我而言,我有一个按钮:
谢谢
browserify - 如何在 Jest 中测试使用 browserify-shim global 的文件?
我正在通过脚本标签下载谷歌地图 API v3,并使用以下(相关) package.json配置将依赖项添加到我的模块中:
我可以使用以下内容在我的文件中添加依赖项:
当我在浏览器中运行我的代码时,它工作正常。问题是,当我用 Jest 运行测试时,它告诉我找不到“google”模块:
笔记:
我正在测试的文件中需要这种依赖关系,而不是测试本身。我觉得这很令人困惑,因为我认为 Jest 会模拟所有依赖项,除非另有说明,但据我所知,它首先需要在模拟之前正确满足依赖项。
关于我缺少什么或应该采取什么方法的任何想法?
reactjs - 如何模拟另一个文件中的返回值?
我正在测试一个不断变化的动作文件,似乎无法弄清楚如何在其中模拟返回值。
当我在测试文件中为模拟模块指定返回值(参见下面的代码)时,一切正常,但是当在我正在测试的模块中调用相同的函数时,它出现为未定义。
还有正在测试的 MissionActions.js。
我对 API 和自动模拟的解释是,在模拟模块(在本例中为 GameStore)上设置 mockReturnValue 适用于整个测试,而不仅仅是在测试文件中。
我将如何模拟 GameStore.getGame() 方法以便它也适用于 MissionActions.js?
reactjs - 如何将Child附加到开玩笑测试DOM中正确位置的反应组件
我有一个由包装器 div 和内部复选框组成的反应组件,这是渲染函数:
在componentDidMount
我将这个复选框换成一个将充当复选框的 div 时,这里是componentDidMount
函数;
当在屏幕上渲染它时,空的 div 被添加到组件中并且一切正常。
在我的玩笑测试中,我尝试了这个;
但是这个数组的长度是 1,只带回 id 为“wrapperDiv”的 div,看起来好像它没有将 checkboxDiv 添加到 DOM。但是,当我在测试中尝试这个时;
它带回了wrapperDiv
和checkboxDiv
是否有原因它没有在组件中添加 div,或者测试中是否需要额外的步骤?
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 错误!测试失败。
有关更多详细信息,请参见上文。
我该如何解决这个问题?