在测试文件中跳过一个测试

我正在使用 Jest 框架并且有一个测试套件。

谷歌文档并不能给我答案。

你知道要核对的答案或信息来源吗?

104808 次浏览

我在这里找到了答案

Https://devhints.io/jest

test('it is raining', () => {
expect(inchesOfRain()).toBeGreaterThan(0);
});


test.skip('it is not snowing', () => {
expect(inchesOfSnow()).toBe(0);
});

链接开关文档

也可以通过在 testdescribe前面加上 x来排除它们。

个别测试

describe('All Test in this describe will be run', () => {
xtest('Except this test- This test will not be run', () => {
expect(true).toBe(true);
});
test('This test will be run', () => {
expect(true).toBe(true);
});
});

描述中的多个测试

xdescribe('All tests in this describe will be skipped', () => {
test('This test will be skipped', () => {
expect(true).toBe(true);
});


test('This test will be skipped', () => {
expect(true).toBe(true);
});
});

跳过考试

如果您想跳过 Jest 中的测试,可以使用 测试 Skip:

test.skip(name, fn)

化名如下:

  • it.skip(name, fn)
  • xit(name, fn)
  • xtest(name, fn)

跳过测试套件

此外,如果您想跳过一个测试套件,您可以使用 描述一下 Skip:

describe.skip(name, fn)

化名如下:

  • xdescribe(name, fn)

只运行一组测试:

如果你在一个测试套件中调试/编写/扩展一个测试,而这个测试套件中有很多测试,你只需要运行你正在运行的那个测试,但是将 .skip添加到每个人身上可能会很痛苦。

所以 .only来救场了。您可以选择跳过其他人在测试期间使用 .only标志,它可以是非常有用的大套件,您需要添加或调试一个测试。

describe('some amazing test suite', () => {
test('number one', () => {
// some testing logic
}
test('number two', () => {
// some testing logic
}
...
test('number x', () => {
// some testing logic
}
test.only('new test or the one needs debugging', () => {
// Now when you run this suite only this test will run
// so now you are free to debug or work on business logic
// instead to wait for other tests to pass every time you run jest
// You can remove `.only` flag once you're done!
}
}


如果您想同时运行多个测试,您还可以将 .only添加到一个测试套件或文件中的多个测试中!

我会为那些可能倒在这里的人补充这个答案,因为我正在寻找自己。

[只有,跳过,别名(更多细节) ,文档参考,不同的变体(每个,并发,失败) ,如何忽略测试文件(最后一节)]

你可以浏览。得到的部分。

只从文件中跳过或运行一个

()[包括 doc 参考文献]

使用 .skip()函数对 Skip a 测试测试套件(描述)

test('something', () => {})

= >

test.skip('something', () => {})

你可以使用别名:

xtest('something', () => {})

这同样适用于 it,它也是一个别名。

it.skip('something', () => {})
xit('something', () => {})

对于 descripe:

describe.skip(() => {})
xdescribe(() => {})

参考文献:
Https://jestjs.io/docs/api#testskipname-fn
Https://jestjs.io/docs/api#describeskipname-fn

别名可以在元素 title 下找到:

enter image description here

您还可以通过编辑器测试何时安装了@type/jest:

enter image description here

例如,ftest不会退出。请参阅下一个 only()部分。

注意:

test.skip.each(table)(name, fn)

对于数据驱动的测试。同样的别名也适用。检查下面的参考文献。

档号: https://jestjs.io/docs/api#testskipeachtablename-fn

同理:

test.concurrent.skip.each(table)(name, fn)

并发测试。这个测试没有 x 别名。查看下面的参考文献。

档号: https://jestjs.io/docs/api#testconcurrentskipeachtablename-fn

还有,

describe.skip.each(table)(name, fn)

档号: https://jestjs.io/docs/api#describeskipeachtablename-fn

test.skip.failing(name, fn, timeout)

档号: https://jestjs.io/docs/api#testskipfailingname-fn-timeout

只有()

如果只想运行该测试,而不想运行其他任何测试,则使用 only()

您可以将 only()用于多个测试或测试套件(描述)。这将运行只有一个有 only()添加到他们

注意: 只能在文件级别执行,不能跨越所有文件。

test('test 1', () => {})
test('test 2', () => {})
test('test 3', () => {})
test.only('test 4', () => {}) // only this would run in this file

多个问题:

test('test 1', () => {})
test.only('test 2', () => {}) // only this
test('test 3', () => {})
test.only('test 4', () => {}) // and this would run in this file

描述:

desribe(() => {
test('test 1', () => {})       // nothing will run here
test.only('test 2', () => {}) //
})


desribe.only(() => {
test('test 1', () => {})
test.only('test 2', () => {}) // only this test
test('test 3', () => {})
test.only('test 4', () => {}) // and this one would be run (because this is the only active describe block)
})


desribe(() => {
test('test 1', () => {}).      // No test will run here
test.only('test 2', () => {}) //
})

仅用于()的别名:

增加一个 f但要小心 ftest()不是一个别名! ! !

it.only()
fit()
describe.only()
fdescribe()
ftest() // WRONG ERROR !!! No such an alias SADLY!!!

嗯,这并不可悲。我个人更喜欢使用 only(),因为它更加冗长和可读。

参考文献:
Https://jestjs.io/docs/api#testonlyname-fn-timeout
Https://jestjs.io/docs/api#describeonlyname-fn

注意:

describe.only.each(table)(name, fn)

档号: https://jestjs.io/docs/api#describeonlyeachtablename-fn

test.concurrent.only.each(table)(name, fn)

档号: https://jestjs.io/docs/api#testconcurrentonlyeachtablename-fn

test.only.failing(name, fn, timeout)

档号: https://jestjs.io/docs/api#testonlyfailingname-fn-timeout

忽略使用 config 或 cli 的测试

本节适用于正在搜索如何忽略完整文件的用户。

TestPathIgnorepattern

如果正则表达式与测试文件匹配,则忽略 正则表达式(regex not glob).oftest 文件。

Https://jestjs.io/docs/configuration#testpathignorepatterns-arraystring

Github 问题参考

例如:

jest.config.ts

import type { Config } from '@jest/types';


const config: Config.InitialOptions = {
preset: 'ts-jest',
testEnvironment: 'node',
verbose: true,
automock: false,
testPathIgnorePatterns: ['.*/__fixtures__/.*'] // here
};


export default config;

或者使用 cli:

档号: https://jestjs.io/docs/cli#--testpathignorepatternsregexarray

jest --testPathIgnorePatterns=".*/__fixtures__/.*"

对于数组(多个 regex) :

有不同的方式:

# one regex with or operator `|`
jest --testPathIgnorePatterns=".*/__fixtures__/.*|<rootDir>/src/someDir/"


# paranthesis with spaces
jest --testPathIgnorePatterns="\(.*/__fixtures__/.* <rootDir>/src/someDir/\)"


# using the argument multiple times
jest --testPathIgnorePatterns=".*/__fixtures__/.*" --testPathIgnorePatterns="<rootDir>/src/someDir/"

TestMatch

TestMatch 可以是确定应该运行什么的另一种方法(就像 only()一样)

它确实使用 globs没有 regex

档号: https://jestjs.io/docs/configuration#testmatch-arraystring

您也可以使用 global 否定来忽略一些文件。

例如:

{
// ... rest of the package
"jest": {
"testMatch": [
"**/__tests__/**/!(DISABLED.)*.[jt]s?(x)",
"**/!(DISABLED.)?(*.)+(spec|test).[tj]s?(x)"
]
}
}

还有 cli 版本:

Https://jestjs.io/docs/cli#——testmatch-glob1——globn

请注意,没有任何参数

jest my-test #or
jest path/to/my-test.js
jest **/some/**/*.spec.*

只会运行与模式匹配的测试文件。

档号: https://jestjs.io/docs/cli#running-from-the-command-line