2017-03-16 1711 views
34

我在文件fix-order-test.js中有一个测试'与嵌套的孩子一起工作'。如何使用Jest运行单个测试?

运行下面的命令可以运行文件中的所有测试。

jest fix-order-test 

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

jest 'works with nested children' 
+0

看看https://facebook.github.io/jest/docs/api.html#testonlyname-fn – BioGenX

回答

48

在命令行中使用--testNamePattern-t标志

jest -t 'fix-order-test' 

这将运行所有的测试,但跳过那些不符合测试名称的测试。其中的docs

另一种方法是在手表模式下运行测试jest --watch,然后按p通过键入测试名称来过滤测试。

+0

我得到了-t识别的选项。是的,文档确实提到了它。该标志已被添加到16.0。我正在使用最新版本。 jest -help似乎没有提到国旗。谢谢。 – vijayst

+1

只是说明这是内部'它()'功能,而不是文件名的特定测试名称的测试图案。这是我的想法。 – HussienK

21

jest documentation提出以下建议:

如果测试失败,第一件事情之一,检查应 当它运行的唯一测试的测试是否失败。开玩笑 很简单只运行一个测试 - 只是临时更改test 命令到test.only

test.only('this will be the only test that runs',() => { 
    expect(true).toBe(false); 
}); 
+7

但是这不起作用...笑话20.0.4 –

+1

用笑话给我工作20.0.4 。虽然它只跳过该文件中的其余测试。其他文件中的测试继续运行,除非您已将运行限制在一个文件中。 – Holf

+1

虽然这是一个开玩笑的事情 - 因为它异步运行测试,它可能无法确定从哪个文件开始运行哪个测试。 因此,将每运行默认和内部的文件检查所有文件'test.only'。 所以,如果你只是想拥有一套测试用例的是由你不得不遗憾的是运行单个文件的许多文件中的许多测试用例文件中运行一个测试'开玩笑myTestFile.test.js' – flaky

5

正如在其他答案中提到的,test.only只是在同一个文件中过滤掉其他测试。所以其他文件中的测试仍然会运行。

因此,为了运行单个测试,有两种做法:

选项1:如果你的测试名称是独一无二的,你可以在手表模式下输入t同时并进入测试的名字,你会喜欢跑步。

选项2:

  1. 命中p而在计时模式,进入一个正则表达式,你想运行的文件名。 (当您在手表模式下运行Jest时,会显示这样的相关命令)。
  2. it更改为it.only您希望运行的测试。

使用上述任一方法,Jest将只在您指定的文件中运行单个测试。

相关问题