Vue Cli使用Jest进行单元测试:如何运行单个测试

31

我有一个使用Vue CLI 3的Vue应用程序。 在安装过程中,我选择了Jest作为测试框架。 要运行我的单元测试,我在package.json中有一个脚本:

test:unit": "vue-cli-service test:unit",

我在VS Code的终端中输入以下命令以运行此代码:

npm run test:unit

这会运行满足 package.json 文件中 jest 配置部分规格的所有测试。

我的问题是如何只运行单个测试。是否需要运行特定的命令?还是有一个适用于此设置的 vscode 扩展程序。


我曾尝试在VSCode上安装Jest-Runner扩展,但是当我尝试运行测试时,它总是显示“测试套件无法运行”。 - JimmyShoe
这个回答解决了你的问题吗?如何使用Jest运行单个测试? - stanimirsp
3个回答

42

如果您想仅执行单个文件,则只需执行以下操作:

npm run test:unit -t counter
OR
npm run test:unit counter

counter.spec.js是我的测试文件。


3
对我来说这个不起作用。它只是简单地显示“0通过”并且没有运行任何测试。 - Timmmm
6
我需要运行 npm run test:unit -t tests/unit/Foo.spec.ts - Timmmm

7
Vue CLI服务尊重Jest的CLI选项,因此您可以将它们附加到 package.json 中的命令中,例如:
{
  ...
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "test:unit": "vue-cli-service test:unit",
    "test:only": "vue-cli-service test:unit --testPathPattern=user.store",
  },
  "dependencies": { 

testPathPattern 接受一个正则表达式,应用于规范文件名,因此在我的测试中,如果我指定模式

--testPathPattern=user.store  

我运行了一个测试文件,但如果我指定

--testPathPattern=store

我运行多个名称中带有store的匹配规格文件。

以下是Jest文档引用


1
这并没有回答问题。它运行特定规范文件中的所有测试,而不是“单个测试”。 - coler-j
1
@coler-j,你可以尝试在testPathPattern选项旁边加上it.only(...) - Andrei Gătej

3

你可以使用only方法。它可以直接链接到test方法上。

myunittests.spec.js

describe('My Unit Tests', () => {
    test('My excluded test', () => {
        ...
    })

    test.only('my single test', () => {
        ...
    })
})

之后您可以通过运行 npm run test:unit -t myunittests 来运行测试。

还有一个可以链接的 skip 方法。

myunittests.spec.js

describe('My Unit Tests', () => {
    test('My excluded test', () => {
        ...
    })

    test.skip('my single test', () => {
        ...
    })
})

再次运行npm run test:unit -t myunittests,您将看到所有“其它”测试正在运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接