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

node.js - 为什么我在用 jest 测试节点应用程序时看不到控制台日志输出

我是 jest 测试的新手,我似乎无法看到我想测试的模块的控制台输出。

我的模块.js:

我的模块-test.js:

为什么开玩笑在“my-module.js”中吞下我的 console.log 输出?

0 投票
1 回答
290 浏览

jestjs - Jest: Cannot call method 'split' of undefined

Given the following jest test (testfile-test.js):

Also have the following jest config in package.json:

But running this test results in the following:

If I remove "var testfile = require('../testfile');" from the test it works fine. Why aren't the send/mime modules getting mocked?

0 投票
1 回答
5380 浏览

javascript - 使用 Jest 进行测试时,是否有更快的方法来重置模拟?

我正在编写一些 React/Flux 代码并使用 Jest 对其进行测试。到目前为止,一切都很好,只是我的测试已经需要很长时间才能完成。

罪魁祸首似乎是在每次测试之间重置模拟。

我的一般设置如下所示:

在我的示例中,如果我不在两个测试之间重新加载商店,我将得到调用次数的错误结果getDoobles,这是有道理的,因为它将是同一个对象。

但是重新加载模拟需要一些时间,如果我做了很多测试,那么它们最终会变慢。

我很想克隆对象或调用重置函数。单个函数 ( ) 有一个重置函数,mockClear()但似乎没有对整个对象进行全局重置。而且我无法克隆该对象,因为克隆与我的 React 组件正在访问的对象不同,因此不会注册任何调用。

这就引出了另一个问题。看来我需要重新加载依赖链中的所有内容。如果我只是重新要求WidgetStore,那么我有权访问的对象似乎与Widget有权访问的对象不同。

如果我只是重新加载WidgetStoreWidget然后我经常会遇到错误,这似乎是由于加载了两个 React 副本引起的。所以我最终也不得不每次都重新加载 React。

那么有没有更好的方法来做到这一点?

0 投票
1 回答
2131 浏览

jasmine - 如何使用 Jest 测试 Reflux 动作

我在测试我的应用程序中是否正确触发了 Reflux 操作时遇到了困难,实际上它们似乎根本不适用于 Jest。我有这个示例测试:

哪个输出:

即使使用 Jasmine 异步功能,它似乎也不起作用

给我...

有人做过这项工作吗?

0 投票
1 回答
483 浏览

reactjs - 反应不受控制的形式 - 空值开玩笑测试

当我通过 Jest 测试不受控制的表单时,我的onChange处理程序会收到新值,但是当我确认它返回的值时Null

我在这里做了一个测试 - https://github.com/timarney/react-formtest

我必须使用 aControlled FormReactLink吗? http://facebook.github.io/react/docs/two-way-binding-helpers.html

0 投票
12 回答
90762 浏览

javascript - 如何模拟像 new Date() 这样的构造函数

我有一个依赖于new Date创建日期对象然后对其进行操作的方法。我正在测试操作是否按预期工作,因此我需要将返回的日期与预期日期进行比较。为此,我需要确保new Date在测试和正在测试的方法中返回相同的值。我怎样才能做到这一点?

有没有办法真正模拟构造函数的返回值?

我可以创建一个模块,该模块可能需要一个提供日期对象并且可以模拟的函数。但这在我的代码中似乎是不必要的抽象。

要测试的示例函数...

我如何模拟的返回值new Date()

0 投票
3 回答
14319 浏览

javascript - 您如何在 Jest 中手动模拟您自己的文件之一?

我正在尝试在 Jest 中模拟一个对象(我创建的),以便我可以在反应组件中提供默认行为(因此不使用真正的实现)

这是我的反应组件 ChatApp(非常简单)

所以我有一个自定义的 I18n 依赖项来进行翻译(I18n 是我编写的,它是 node-polyglot 的包装器)。

所以我想做一个基本的测试,看看 H1 中是否有正确的词,但我不想在我的 I18n 对象上设置 jest.dontMock() ,因为我不希望它使用真实的对象在 ChatApp 测试中。

所以按照 jest 网站上的基本说明,我创建了一个mocks文件夹并为 i18n 创建了一个 mock 文件,它从原始对象生成一个 mock,然后覆盖 t 方法并添加一个方法来允许我设置返回字符串吨。

这是模拟对象

现在在我的 ChatApp 测试中,我需要在每个之前进行模拟,如下所示:

如果我 console.log 测试中的 i18n 对象,那么我得到正确的模拟对象, __setReturnString 也会被触发(就像我在该消息中 console.log 我看到日志一样)。

但是,如果我 console.log 实际 React 组件中的 i18n 对象,那么它会得到一个 Jest 模拟,但它没有得到我的 Jest 模拟,所以 t 方法是一个不做任何事情的空方法,这意味着测试失败.

任何想法我做错了什么?

非常感谢

0 投票
1 回答
2408 浏览

reactjs - How to check if component has child component

I am using Jest to test a ReactJS app. How can one test if the view controller has the necessary child components present.

For example, here is an example of the view controllers' render function:

For HTML elements, something like will do:

How can I do the same for the Form or Table components ?

Thank you!

0 投票
1 回答
875 浏览

reactjs - 如何从组件测试中测试 ReactJS Flux Action(在 Jest 中)?

我有一个组件,单击按钮即可调用通量操作:

现在,我希望测试基本上能够模拟按钮单击(我知道该怎么做)。

并在按钮上单击检查以查看是否使用给定字符串调用了“MessageActions.sendMessage”函数。

如何从我的测试中访问 MessageActions?

我正在测试的对象称为 ChatMessage,但 MessageActions 是在 React.CreateClass 代码之外定义的。

我在测试中尝试过一些事情,例如:

但是没有任何效果,因为它只是说 MessageActions 是未定义的。

ReactJS 文档有一个测试商店的(蹩脚的)示例,但没有关于如何测试组件中使用的操作。

请提供任何帮助

0 投票
6 回答
23011 浏览

javascript - Jest 中的 XMLHttpRequest 测试

我想测试 AJAX 方法(vanilla XHR),但我找不到使用Jest框架的方法。我找到mock-ajax.js了茉莉花。问题是我找不到安装它的方法。

是否有更好的方法在Jest中对 Ajax 函数进行单元测试?