开玩笑 你的测试套件必须至少包含一个测试

Posted

技术标签:

【中文标题】开玩笑 你的测试套件必须至少包含一个测试【英文标题】:Jest Your test suite must contain at least one test 【发布时间】:2021-06-26 02:59:32 【问题描述】:

我在./pages/test.js有一个简单的测试文件

import React from 'react'

export default function HomePage () 
  return (
    <main>
      <h1>Testing Next.js With Jest and React Testing Library</h1>
    </main>
  )

./test/pages/index.test.js 中,我进行了以下简单测试,以检查我的页面是否正确呈现以及是否有标题

import React from 'react'
// Using render and screen from test-utils.js instead of
// @testing-library/react
import  render, screen  from '../test-utils'
import HomePage from '../../pages/test'

describe('HomePage', () => 
  it('should render the heading', () => 
    render(<HomePage />)

    const heading = screen.getByText('Testing Next.js With Jest and React Testing Library')

    // we can only use toBeInTheDocument because it was imported
    // in the jest.setup.js and configured in jest.config.js
    expect(heading).toBeInTheDocument()
  )
)

运行测试后出现以下错误

 FAIL  pages/test.js
  ● Test suite failed to run

    Your test suite must contain at least one test.

      at onResult (node_modules/@jest/core/build/TestScheduler.js:175:18)
      at node_modules/@jest/core/build/TestScheduler.js:304:17
      at node_modules/emittery/index.js:260:13
          at Array.map (<anonymous>)
      at Emittery.Typed.emit (node_modules/emittery/index.js:258:23)

 PASS  test/pages/index.test.js

Test Suites: 1 failed, 1 passed, 2 total
Tests:       1 passed, 1 total

为什么开玩笑说我错过了考试?

【问题讨论】:

【参考方案1】:

为什么开玩笑说我错过了考试?

因为 Jest 认为 pages/test.js 是一个测试文件。 Jest 使用以下正则表达式来检测测试文件。

(/__tests__/.*|(\\.|/)(test|spec))\\.[jt]sx?$

来自docs,

默认情况下,它会在__tests__ 文件夹中查找.js.jsx.ts.tsx 文件,以及任何后缀为.test.spec 的文件(例如@ 987654331@ 或 Component.spec.js)。它还会找到名为 test.jsspec.js 的文件。

一个简单的解决方案是重命名文件。

【讨论】:

我将test.js 重命名为simple.js。然后我移动了文件,所以它的位置是./pages/__tests__/simple.js。将HomePage 导入更改为import HomePage from '../../pages/__tests__/simple 后,我运行测试并得到与上述相同的错误。你能告诉我我做错了什么吗? @dev_el 正如我在答案中提到的,Jest 假定 __tests__ 中的所有文件都是测试文件。将simple.js 移出__tests__ 目录。

以上是关于开玩笑 你的测试套件必须至少包含一个测试的主要内容,如果未能解决你的问题,请参考以下文章

开玩笑:测试套件无法运行,意外令牌 =

第一次失败后开玩笑停止测试套件

开玩笑:测试套件无法运行,SyntaxError:意外的令牌导入

开玩笑:测试套件无法运行(Expo SDK 需要 Expo 才能运行)

用 Create React App 开玩笑:测试套件无法运行 - 意外的令牌

如何在 Cucumber 测试套件中订购功能文件?