标签: jestjs

如何使用Jest测试单个文件?

我可以使用Jest测试多个文件,但我无法弄清楚如何测试单个文件.

我有:

  • npm install jest-cli --save-dev
  • 更新package.json:`{..."脚本":{"test":"jest"} ...}
  • 写了一些测试.

正常运行npm test(目前运行14次测试).

如何测试单个文件,例如测试app/foo/__tests__/bar.spec.js

我试过运行npm test app/foo/__tests__/bar.spec.js(从项目根目录),但我收到以下错误:

npm ERR! Error: ENOENT, open '<path to project>/node_modules/app/foo/__tests__/bar.spec.js/package.json'
Run Code Online (Sandbox Code Playgroud)

谢谢

node.js jestjs

283
推荐指数
20
解决办法
19万
查看次数

如何使用Jest运行单个测试?

我在文件fix-order-test.js中进行了"与嵌套子项一起工作"的测试.

运行以下命令会运行文件中的所有测试.

jest fix-order-test
Run Code Online (Sandbox Code Playgroud)

我如何只运行一次测试?以下不起作用,因为它搜索指定的正则表达式的文件.

jest 'works with nested children'
Run Code Online (Sandbox Code Playgroud)

jestjs

272
推荐指数
16
解决办法
15万
查看次数

如何使用Jest模拟ES6模块导入?

我开始认为这是不可能的,但无论如何我想问.

我想测试我的一个ES6模块以特定方式调用另一个ES6模块.使用Jasmine这非常容易 -

应用代码:

// myModule.js
import dependency from './dependency';

export default (x) => {
  dependency.doSomething(x * 2);
}
Run Code Online (Sandbox Code Playgroud)

和测试代码:

//myModule-test.js
import myModule from '../myModule';
import dependency from '../dependency';

describe('myModule', () => {
  it('calls the dependency with double the input', () => {
    spyOn(dependency, 'doSomething');

    myModule(2);

    expect(dependency.doSomething).toHaveBeenCalledWith(4);
  });
});
Run Code Online (Sandbox Code Playgroud)

什么与Jest相当?我觉得这是一件非常简单的事情,但我一直在试图弄清楚我的头发.

我最接近的import是用requires 替换s,并在测试/函数内移动它们.这些都不是我想要做的事情.

// myModule.js
export default (x) => {
  const dependency = require('./dependency'); // yuck
  dependency.doSomething(x * 2);
}

//myModule-test.js
describe('myModule', () => {
  it('calls the …
Run Code Online (Sandbox Code Playgroud)

javascript mocking node.js ecmascript-6 jestjs

227
推荐指数
7
解决办法
14万
查看次数

如何在Jest中使用ESLint

我正在尝试将ESLint linter与Jest测试框架一起使用.

Jest测试用一些全局变量运行jest,我需要告诉linter; 但是棘手的是目录结构,使用Jest测试嵌入了__tests__文件夹中的源代码,因此目录结构类似于:

src
    foo
        foo.js
        __tests__
            fooTest.js
    bar
        bar.js
        __tests__
            barTest.js
Run Code Online (Sandbox Code Playgroud)

通常情况下,我在单个目录下进行所有测试,我可以在.eslintrc那里添加一个文件来添加全局...但我当然不想.eslintrc在每个__test__目录中添加一个文件.

现在,我刚刚将测试全局变量添加到全局.eslintrc文件中,但由于这意味着我现在可以jest在非测试代码中引用,这似乎不是"正确"的解决方案.

有没有办法让eslint基于某些基于目录名称的模式应用规则,或类似的东西?

javascript eslint jestjs

196
推荐指数
7
解决办法
7万
查看次数

在开玩笑中'it'和'test'有什么区别?

我的测试组中有两个测试.一个使用它,另一个使用测试,它们似乎工作非常相似.他们之间有什么区别?

describe('updateAll', () => {
  it('no force', () => {
    return updateAll(TableName, ["fileName"], {compandId: "test"})
        .then(updatedItems => {
          let undefinedCount = 0;
          for (let item of updatedItems) {
            undefinedCount += item === undefined ? 1 : 0;
          }
          // console.log("result", result);
          expect(undefinedCount).toBe(updatedItems.length);
        })
  });

  test('force update', () => {
    return updateAll(TableName, ["fileName"], {compandId: "test"}, true)
        .then(updatedItems => {
          let undefinedCount = 0;
          for (let item of updatedItems) {
            undefinedCount += item === undefined ? 1 : 0;
          }
          // console.log("result", …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing jestjs

194
推荐指数
5
解决办法
4万
查看次数

在jest.setTimeout指定的5000ms超时内未调用异步回调

我正在使用木偶戏和开玩笑来进行一些前端测试.

我的测试看起来如下:

describe("Profile Tab Exists and Clickable: /settings/user", () => {
    test(`Assert that you can click the profile tab`, async () => {
      await page.waitForSelector(PROFILE.TAB);
      await page.click(PROFILE.TAB);
    }, 30000);
});
Run Code Online (Sandbox Code Playgroud)

有时,当我运行测试时,一切都按预期工作.其他时候,我收到一个错误:

Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.

      at node_modules/jest-jasmine2/build/queue_runner.js:68:21
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:633:19)
Run Code Online (Sandbox Code Playgroud)

这很奇怪,因为:

  1. 我指定超时为30000

  2. 我是否得到这个错误似乎非常随机

任何人都可以猜到为什么会这样吗?

javascript automated-tests jestjs puppeteer

152
推荐指数
16
解决办法
9万
查看次数

Jest SecurityError:localStorage不适用于不透明的起源

当我想用命令运行我的项目时npm run test,我得到以下错误.是什么造成的?

FAIL
? Test suite failed to run

SecurityError: localStorage is not available for opaque origins at Window.get localStorage [as localStorage] (node_modules/jsdom/lib/jsdom/browser/Window.js:257:15)
      at Array.forEach (<anonymous>)
Run Code Online (Sandbox Code Playgroud)

javascript node.js npm jestjs

140
推荐指数
7
解决办法
2万
查看次数

如何在开玩笑测试中处理localStorage?

我一直在Jest测试中得到"localStorage is not defined",这是有道理的,但我的选择是什么?打砖墙.

jestjs

125
推荐指数
15
解决办法
5万
查看次数

将 Jest 升级到 v29 - 错误 无法找到测试环境 jest-environment-jsdom

有人成功升级到最新的 Jest 版本吗29
我收到错误:

Error: Test environment jest-environment-jsdom cannot be found. Make sure the testEnvironment configuration option points to an existing node module.
Run Code Online (Sandbox Code Playgroud)

javascript node.js typescript jestjs ts-jest

118
推荐指数
1
解决办法
7万
查看次数

如何顺序运行Jest测试?

我正在通过Jest测试npm test.Jest默认并行运行测试.有没有办法让测试依次运行?

我有一些测试调用依赖于更改当前工作目录的第三方代码.

jestjs

112
推荐指数
10
解决办法
4万
查看次数