Jest 配置

2021-09-23 20:21 更新

Jest 的配置可以在?package.json?你項(xiàng)目的文件中定義,也可以通過?jest.config.js?文件或?--config <path/to/file.js|cjs|mjs|json>?選項(xiàng)來定義。如果你想用你的?package.json?來存儲 Jest 的配置,?"jest"?密鑰應(yīng)該用在頂層,這樣 Jest 就會知道如何找到你的設(shè)置:

  1. {
  2. "name": "my-project",
  3. "jest": {
  4. "verbose": true
  5. }
  6. }

或者通過 JavaScript:

  1. // jest.config.js
  2. //Sync object
  3. module.exports = {
  4. verbose: true,
  5. };
  6. //Or async function
  7. module.exports = async () => {
  8. return {
  9. verbose: true,
  10. };
  11. };

請記住最后拿到的配置必須是可被 JSON 序列化的。

使用?--config配?置選項(xiàng)時(shí),JSON 文件絕不能有"jest"鍵值︰

  1. {
  2. "bail": 1,
  3. "verbose": true
  4. }

選項(xiàng)

這些選項(xiàng)可讓你控制 Jest 在?package.json?文件中的行為。Jest 的理念是默認(rèn)運(yùn)行良好,但有時(shí)你只需要更多的配置能力。

默認(rèn)值

你可以了解 Jest 的默認(rèn)選項(xiàng),以便在必要時(shí)擴(kuò)展它們:

  1. // jest.config.js
  2. const {defaults} = require('jest-config');
  3. module.exports = {
  4. // ...
  5. moduleFileExtensions: [...defaults.moduleFileExtensions, 'ts', 'tsx'],
  6. // ...
  7. };

參考

automock [boolean]

默認(rèn)值︰?false?

這個(gè)選項(xiàng)告訴 Jest 測試中所有導(dǎo)入的模塊都應(yīng)該自動模擬。測試中使用的所有模塊都將具有替換實(shí)現(xiàn),從而保持 API 表面。

示例:

  1. // utils.js
  2. export default {
  3. authorize: () => {
  4. return 'token';
  5. },
  6. isAuthorized: secret => secret === 'wizard',
  7. };
  1. //__tests__/automocking.test.js
  2. import utils from '../utils';
  3. test('if utils mocked automatically', () => {
  4. // Public methods of `utils` are now mock functions
  5. expect(utils.authorize.mock).toBeTruthy();
  6. expect(utils.isAuthorized.mock).toBeTruthy();
  7. // You can provide them with your own implementation
  8. // or pass the expected return value
  9. utils.authorize.mockReturnValue('mocked_token');
  10. utils.isAuthorized.mockReturnValue(true);
  11. expect(utils.authorize()).toBe('mocked_token');
  12. expect(utils.isAuthorized('not_wizard')).toBeTruthy();
  13. });

注意:當(dāng)你進(jìn)行手動模擬時(shí),節(jié)點(diǎn)模塊會自動模擬(例如:)?__mocks__/lodash.js?。更多信息在這里。

注意:fs默認(rèn)情況下不會模擬核心模塊,例如。它們可以被顯式地模擬,例如jest.mock('fs').

bail[number | boolean]

默認(rèn)值: ?0?

默認(rèn)情況下,Jest 運(yùn)行所有測試并在完成后將所有錯(cuò)誤生成到控制臺中??梢栽诖颂幨褂帽a屌渲眠x項(xiàng)讓 Jest 在n失敗后停止運(yùn)行測試。將保釋設(shè)置true為與將保釋設(shè)置為相同1。

cacheDirectory [string]

默認(rèn)值︰ ?"/tmp/<path>"?

Jest用來儲存依賴信息緩存的目錄。

Jest 嘗試去掃描你的依賴樹一次(前期)并且把依賴樹緩存起來,其目的就是抹去某些在運(yùn)行測試時(shí)需要進(jìn)行的文件系統(tǒng)排序。 這一配置選項(xiàng)讓你可以自定義Jest將緩存數(shù)據(jù)儲存在磁盤的那個(gè)位置。

clearMocks [boolean]

默認(rèn)值︰?false?

在每次測試之前自動清除模擬調(diào)用和實(shí)例。相當(dāng)于jest.clearAllMocks()每次測試前調(diào)用。這不會刪除可能已提供的任何模擬實(shí)現(xiàn)。

collectCoverage [boolean]

默認(rèn)值︰?false?

指出是否收集測試時(shí)的覆蓋率信息。 因?yàn)檫@些使用?coverage collection?語句對所有執(zhí)行的文件進(jìn)行了改造,所以可能會顯著降低測試的速度。

collectCoverageFrom [array]

默認(rèn)值:?undefined?

一組 glob 模式,指示應(yīng)為其收集覆蓋率信息的一組文件。如果文件與指定的 glob 模式匹配,即使此文件不存在測試并且測試套件中從不需要它,也會為其收集覆蓋率信息。

示例:

  1. {
  2. "collectCoverageFrom": [
  3. "**/*.{js,jsx}",
  4. "!**/node_modules/**",
  5. "!**/vendor/**"
  6. ]
  7. }

這將收集項(xiàng)目中所有文件的覆蓋信息rootDir,除了匹配?**/node_modules/**?或 的文件?**/vendor/**?。

注意:該選項(xiàng)要求 ?collectCoverage ?被設(shè)成?true?,或者通過 ?--coverage? 參數(shù)來調(diào)用 Jest。

幫助:如果你看到覆蓋輸出,例如……

  1. =============================== Coverage summary ===============================
  2. Statements : Unknown% ( 0/0 )
  3. Branches : Unknown% ( 0/0 )
  4. Functions : Unknown% ( 0/0 )
  5. Lines : Unknown% ( 0/0 )
  6. ================================================================================
  7. Jest: Coverage data for global was not found.

很可能你的 glob 模式與任何文件都不匹配。請參閱micromatch文檔以確保你的 glob 兼容。

coverageDirectory [string]

默認(rèn)值:undefined

Jest輸出覆蓋信息文件的目錄。

coveragePathIgnorePatterns [array]

默認(rèn)值︰?["node_modules"]?

在執(zhí)行測試之前與所有文件路徑匹配的正則表達(dá)式模式字符串?dāng)?shù)組。如果文件路徑與任何模式匹配,則將跳過覆蓋信息。

這些模式字符串與完整路徑匹配。使用?<rootDir>?字符串標(biāo)記包含項(xiàng)目根目錄的路徑,以防止它意外忽略不同環(huán)境中可能具有不同根目錄的所有文件。例子:?["<rootDir>/build/", "<rootDir>/node_modules/"]?。

coverageProvider [string]

指示應(yīng)使用哪個(gè)提供程序來檢測代碼以進(jìn)行覆蓋。允許的值為babel(默認(rèn))或v8。

請注意,使用v8被認(rèn)為是實(shí)驗(yàn)性的。這使用了 V8 的內(nèi)置代碼覆蓋率,而不是基于 Babel 的覆蓋率。它沒有經(jīng)過很好的測試,而且在 Node.js 的最后幾個(gè)版本中也得到了改進(jìn)。使用最新版本的 node(在撰寫本文時(shí)為 v14)會產(chǎn)生更好的結(jié)果。

coverageReporters [array]

默認(rèn)值:? ["json", "lcov", "text", "clover"]?

Jest 在撰寫報(bào)道報(bào)告時(shí)使用的記者姓名列表??梢允褂萌魏?a href="http://www.o2fo.com/targetlink?url=https://github.com/istanbuljs/istanbuljs/tree/master/packages/istanbul-reports/lib" target="_blank">伊斯坦布爾記者。

注意:設(shè)置此選項(xiàng)會覆蓋默認(rèn)值。添加"text"或"text-summary"查看控制臺輸出中的覆蓋范圍摘要。

注意:你可以使用元組形式將其他選項(xiàng)傳遞給 istanbul 報(bào)告器。例如:

  1. ["json", ["lcov", {"projectRoot": "../../"}]]

有關(guān)選項(xiàng)對象形狀的其他信息,請參考類型定義中的?CoverageReporterWithOptions?類型。

coverageThreshold [object]

默認(rèn)值:?undefined?

這將用于配置覆蓋結(jié)果的最低閾值強(qiáng)制執(zhí)行。閾值可以指定為global、glob以及目錄或文件路徑。沒有如果達(dá)到閾值,Jest 執(zhí)行測試時(shí)將失敗。指定為正數(shù)的閾值被視為所需的最小百分比。指定為負(fù)數(shù)的閾值表示允許的未覆蓋實(shí)體的最大數(shù)量。

例如,如果分支、行和函數(shù)覆蓋率低于 80%,或者有超過 10 個(gè)未覆蓋的語句,則使用以下配置 jest 將失?。?/p>

  1. {
  2. ...
  3. "jest": {
  4. "coverageThreshold": {
  5. "global": {
  6. "branches": 80,
  7. "functions": 80,
  8. "lines": 80,
  9. "statements": -10
  10. }
  11. }
  12. }
  13. }

如果全局或路徑與全局一起指定,則匹配路徑的覆蓋率數(shù)據(jù)將從總體覆蓋率中減去,并且將獨(dú)立應(yīng)用閾值。通配符模式設(shè)置的閾值將應(yīng)用到所匹配的所有文件上并單獨(dú)計(jì)算。 如果找不到路徑指定的文件,則返回錯(cuò)誤。

例如,基于下面的配置:

  1. {
  2. ...
  3. "jest": {
  4. "coverageThreshold": {
  5. "global": {
  6. "branches": 50,
  7. "functions": 50,
  8. "lines": 50,
  9. "statements": 50
  10. },
  11. "./src/components/": {
  12. "branches": 40,
  13. "statements": 40
  14. },
  15. "./src/reducers/**/*.js": {
  16. "statements": 90
  17. },
  18. "./src/api/very-important-module.js": {
  19. "branches": 100,
  20. "functions": 100,
  21. "lines": 100,
  22. "statements": 100
  23. }
  24. }
  25. }
  26. }

Jest 在以下情況下將失?。?/p>

  • 該?./src/components?目錄的分支或語句覆蓋率低于 ?40%?。
  • 匹配?./src/reducers/**/*.jsglob?的文件之一的語句覆蓋率低于? 90%?。
  • 文件 ?./src/api/very-important-module.js ?的任意一種覆蓋率低于 ?100%?
  • 所有剩下的文件的任意一種覆蓋率總計(jì)低于? 50%? (根據(jù) global)

dependencyExtractor [string]

默認(rèn)值:?undefined?

此選項(xiàng)允許使用自定義依賴項(xiàng)提取器。它必須是一個(gè)節(jié)點(diǎn)模塊,它導(dǎo)出一個(gè)帶有?extract?函數(shù)的對象。例如:

  1. const fs = require('fs');
  2. const crypto = require('crypto');
  3. module.exports = {
  4. extract(code, filePath, defaultExtract) {
  5. const deps = defaultExtract(code, filePath);
  6. // Scan the file and add dependencies in `deps` (which is a `Set`)
  7. return deps;
  8. },
  9. getCacheKey() {
  10. return crypto
  11. .createHash('md5')
  12. .update(fs.readFileSync(__filename))
  13. .digest('hex');
  14. },
  15. };

該?extract?函數(shù)應(yīng)該返回一個(gè)可迭代的(?Array?、?Set?等),其中包含在代碼中找到的依賴項(xiàng)。

該模塊還可以包含一個(gè)?getCacheKey?函數(shù)來生成一個(gè)緩存鍵,以確定邏輯是否已經(jīng)改變,任何依賴于它的緩存工件都應(yīng)該被丟棄。

displayName [string,object]

默認(rèn)值:?undefined?

允許在測試運(yùn)行時(shí)在測試旁邊打印標(biāo)簽。這在可能有許多 jest 配置文件的多項(xiàng)目存儲庫中變得更加有用。這直觀地告訴了測試屬于哪個(gè)項(xiàng)目。以下是示例有效值。

  1. module.exports = {
  2. displayName: 'CLIENT',
  3. };

  1. module.exports = {
  2. displayName: {
  3. name: 'CLIENT',
  4. color: 'blue',
  5. },
  6. };

作為次要的選擇,與該屬性的對象name和color可以傳遞。這允許自定義配置 displayName 的背景顏色。displayName當(dāng)其值為字符串時(shí)默認(rèn)為白色。Jest 使用粉筆提供顏色。因此,jest 也支持 chalk 支持的所有顏色的有效選項(xiàng)。

errorOnDeprecated [boolean]

默認(rèn)值︰?false?

使調(diào)用已棄用的 API 拋出有用的錯(cuò)誤消息。有助于簡化升級過程。

extraGlobals [array]

默認(rèn)值:?undefined?

測試文件在vm內(nèi)運(yùn)行,這會減慢對全局上下文屬性(例如Math)的調(diào)用。使用此選項(xiàng),你可以指定要在 vm 內(nèi)定義的額外屬性,以加快查找速度。

例如,如果你的測試Math經(jīng)常調(diào)用,你可以通過設(shè)置?extraGlobals?.

  1. {
  2. ...
  3. "jest": {
  4. "extraGlobals": ["Math"]
  5. }
  6. }

forceCoverageMatch [array]

默認(rèn): ?['']?

收集代碼覆蓋率時(shí)通常會忽略測試文件。使用此選項(xiàng),你可以覆蓋此行為并在代碼覆蓋率中包含其他被忽略的文件。

例如,如果你在以.t.js擴(kuò)展名命名的源文件中有測試,如下所示:

  1. // sum.t.js
  2. export function sum(a, b) {
  3. return a + b;
  4. }
  5. if (process.env.NODE_ENV === 'test') {
  6. test('sum', () => {
  7. expect(sum(1, 2)).toBe(3);
  8. });
  9. }

你可以通過設(shè)置 ?forceCoverageMatch ?從這些文件中收集覆蓋率。

  1. {
  2. ...
  3. "jest": {
  4. "forceCoverageMatch": ["**/*.t.js"]
  5. }
  6. }

globals [object]

默認(rèn)值:?{}?

一組全局變量,在所有測試環(huán)境下都可以訪問。

例如,下面這段代碼將為所有測試環(huán)境創(chuàng)建一個(gè)值為?true?的全局變量?__DEV__?:

  1. {
  2. ...
  3. "jest": {
  4. "globals": {
  5. "__DEV__": true
  6. }
  7. }
  8. }

注意,如果你在這指定了一個(gè)全局引用值(例如,對象或者數(shù)組),之后在測試運(yùn)行中有些代碼改變了這個(gè)被引用的值,這個(gè)改動對于其他測試不會生效。 此外,?globals?對象必須是json可序列化的,因此不能用于指定全局函數(shù)。為此,你應(yīng)該使用?setupfile?。

globalSetup [string]

默認(rèn)值:?undefined?

此選項(xiàng)允許使用自定義全局設(shè)置模塊,該模塊導(dǎo)出在所有測試套件之前觸發(fā)一次的異步函數(shù)。該函數(shù)獲取 Jest 的?globalConfig?對象作為參數(shù)。

注意:只有當(dāng)你從該項(xiàng)目運(yùn)行至少一個(gè)測試時(shí),才會觸發(fā)在項(xiàng)目中配置的全局設(shè)置模塊(使用多項(xiàng)目運(yùn)行器)。

注意:通過定義的任何全局變量?globalSetup?只能在?globalTeardown?.你無法在測試套件中檢索此處定義的全局變量。

注意:當(dāng)代碼轉(zhuǎn)換應(yīng)用于鏈接的安裝文件時(shí),Jest不會轉(zhuǎn)換?node_modules?. 這是因?yàn)樾枰虞d實(shí)際的變壓器(例如?babel?或?typescript?)來執(zhí)行轉(zhuǎn)換。

示例:

  1. // setup.js
  2. module.exports = async () => {
  3. // ...
  4. // Set reference to mongod in order to close the server during teardown.
  5. global.__MONGOD__ = mongod;
  6. };
  1. // teardown.js
  2. module.exports = async function () {
  3. await global.__MONGOD__.stop();
  4. };

globalTeardown [string]

默認(rèn)值:?undefined?

此選項(xiàng)允許使用自定義全局拆卸模塊,該模塊導(dǎo)出在所有測試套件后觸發(fā)一次的異步函數(shù)。該函數(shù)獲取 Jest 的?globalConfig?對象作為參數(shù)。

注意:在項(xiàng)目中配置的全局拆卸模塊(使用多項(xiàng)目運(yùn)行器)只有在你從該項(xiàng)目運(yùn)行至少一個(gè)測試時(shí)才會被觸發(fā)。

注意:關(guān)于?node_modulesas for? 的轉(zhuǎn)換的相同注意事項(xiàng)?globalSetup?適用于?globalTeardown?。

maxConcurrency [number]

默認(rèn): ?5?

使用?test.concurrent?. 一旦插槽被釋放,任何超過此限制的測試都將排隊(duì)并執(zhí)行。

moduleDirectories [array]

默認(rèn)值︰?["node_modules"]?

要從所需模塊的位置向上遞歸搜索的目錄名稱數(shù)組。設(shè)置此選項(xiàng)將覆蓋默認(rèn)值,如果你仍希望搜索node_modules包,請將其與任何其他選項(xiàng)一起包含在內(nèi):?["node_modules", "bower_components"]?

moduleFileExtensions [array]

默認(rèn): ?["js", "json", "jsx", "ts", "tsx", "node"]?

你的模塊使用的文件擴(kuò)展名數(shù)組。如果你需要沒有指定文件擴(kuò)展名的模塊,這些是 Jest 將按從左到右的順序查找的擴(kuò)展名。

我們建議將項(xiàng)目中最常用的擴(kuò)展放在左側(cè),因此如果你使用的是 ?TypeScript?,你可能需要考慮將?“ts?”和?/?或?“tsx”?移動到數(shù)組的開頭。

moduleNameMapper [object>]

默認(rèn)值︰?null?

從正則表達(dá)式到模塊名稱或模塊名稱數(shù)組的映射,允許使用單個(gè)模塊提取資源,例如圖像或樣式。

映射到別名的模塊在默認(rèn)情況下是 ?unmock ?的,無論是否啟用 ?automocking?。

如果要使用文件路徑?<rootDir>?,請使用字符串標(biāo)記來引用rootDir值。

此外,你可以使用編號的反向引用替換捕獲的正則表達(dá)式組。

示例:

  1. {
  2. "moduleNameMapper": {
  3. "^image![a-zA-Z0-9$_-]+$": "GlobalImageStub",
  4. "^[./a-zA-Z0-9$_-]+\\.png$": "<rootDir>/RelativeImageStub.js",
  5. "module_name_(.*)": "<rootDir>/substituted_module_$1.js",
  6. "assets/(.*)": [
  7. "<rootDir>/images/$1",
  8. "<rootDir>/photos/$1",
  9. "<rootDir>/recipes/$1"
  10. ]
  11. }
  12. }

定義映射的順序很重要。圖案被一一檢查,直到適合為止。應(yīng)首先列出最具體的規(guī)則。對于模塊名稱數(shù)組也是如此。

注意:如果你提供無邊界的模塊名稱?^$?,可能會導(dǎo)致難以發(fā)現(xiàn)錯(cuò)誤。例如,relay將替換relay名稱中包含子字符串的所有模塊:relay,react-relay并且graphql-relay都將指向你的存根。

modulePathIgnorePatterns [array]

默認(rèn)值:?[]?

在模塊加載器將這些路徑視為“可見”之前,與所有模塊路徑匹配的正則表達(dá)式模式字符串?dāng)?shù)組。如果給定模塊的路徑與任何模式匹配,則它將無法require()在測試環(huán)境中使用。

這些模式字符串與完整路徑匹配。使用<rootDir>字符串標(biāo)記包含項(xiàng)目根目錄的路徑,以防止它意外忽略不同環(huán)境中可能具有不同根目錄的所有文件。例子:?["<rootDir>/build/"]?。

modulePaths [array]

默認(rèn)值:?[]?

設(shè)置?NODE_PATHenv? 變量的替代 ?APImodulePaths?是解析模塊時(shí)要搜索的其他位置的絕對路徑數(shù)組。使用?<rootDir>?字符串標(biāo)記包含項(xiàng)目根目錄的路徑。例子:?["<rootDir>/app/"]?。

notify [boolean]

默認(rèn)值︰?false?

激活測試結(jié)果通知。

注意: Jest 使用node-notifier來顯示桌面通知。在 Windows 上,它會在第一次使用時(shí)創(chuàng)建一個(gè)新的開始菜單條目,并且不顯示通知。通知將在后續(xù)運(yùn)行中正確顯示

notifyMode [string]

默認(rèn): ?failure-change?

指定通知模式。需要?notify: true?.

模式

  • ?always?: 總是發(fā)送通知。
  • ?failure?: 當(dāng)測試失敗時(shí)發(fā)送通知。
  • ?success?: 當(dāng)測試通過時(shí)發(fā)送通知。
  • ?change?:狀態(tài)改變時(shí)發(fā)送通知。
  • ?success-change?: 測試通過或失敗時(shí)發(fā)送通知。
  • ?failure-change?:當(dāng)測試失敗或一旦通過時(shí)發(fā)送通知。

preset [string]

默認(rèn)值:?undefined?

用作 Jest 配置基礎(chǔ)的預(yù)設(shè)。預(yù)設(shè)應(yīng)指向根目錄為?jest-preset.json?或?jest-preset.js?文件的 ?npm ?模塊。

例如,此預(yù)設(shè)?foo-bar?/?jest-preset.js?將配置如下:

  1. {
  2. "preset": "foo-bar"
  3. }

預(yù)設(shè)也可能與文件系統(tǒng)路徑有關(guān)。

  1. {
  2. "preset": "./node_modules/foo-bar/jest-preset.js"
  3. }

prettierPath [string]

默認(rèn): ?'prettier'?

設(shè)置prettier用于更新內(nèi)聯(lián)快照的節(jié)點(diǎn)模塊的路徑。

projects [array]

默認(rèn)值:?undefined?

當(dāng)projects配置提供了一系列路徑或全局模式時(shí),Jest 將同時(shí)在所有指定的項(xiàng)目中運(yùn)行測試。這對于 monorepos 或同時(shí)處理多個(gè)項(xiàng)目時(shí)非常有用。

  1. {
  2. "projects": ["<rootDir>", "<rootDir>/examples/*"]
  3. }

此示例配置將在根目錄以及示例目錄中的每個(gè)文件夾中運(yùn)行 Jest。你可以在同一個(gè) Jest 實(shí)例中運(yùn)行無限數(shù)量的項(xiàng)目。

該項(xiàng)目的功能也可以用于運(yùn)行多種配置或多亞軍。為此,你可以傳遞一組配置對象。例如,要在同一個(gè) Jest 調(diào)用中同時(shí)運(yùn)行測試和 ESLint(通過jest-runner-eslint):

  1. {
  2. "projects": [
  3. {
  4. "displayName": "test"
  5. },
  6. {
  7. "displayName": "lint",
  8. "runner": "jest-runner-eslint",
  9. "testMatch": ["<rootDir>/**/*.js"]
  10. }
  11. ]
  12. }

注意:使用多項(xiàng)目運(yùn)行器時(shí),建議?displayName?為每個(gè)項(xiàng)目添加一個(gè)。這將在?displayName?其測試旁邊顯示項(xiàng)目的 。

reporters [array]

默認(rèn)值:?undefined?

使用此配置選項(xiàng)將自定義報(bào)告器添加到 Jest。自定義報(bào)告器是一個(gè)實(shí)現(xiàn)?onRunStart?、?onTestStart?、?onTestResult?、?onRunComplete?方法的類,這些方法將在發(fā)生任何這些事件時(shí)調(diào)用。

如果指定了自定義報(bào)告器,默認(rèn)的 Jest 報(bào)告器將被覆蓋。要保留默認(rèn)報(bào)告器,default可以作為模塊名稱傳遞。

這將覆蓋默認(rèn)記者:

  1. {
  2. "reporters": ["<rootDir>/my-custom-reporter.js"]
  3. }

除了 Jest 提供的默認(rèn)報(bào)告器之外,這還將使用自定義報(bào)告器:

  1. {
  2. "reporters": ["default", "<rootDir>/my-custom-reporter.js"]
  3. }

此外,可以通過將?options?對象作為第二個(gè)參數(shù)傳遞來配置自定義報(bào)告器:

  1. {
  2. "reporters": [
  3. "default",
  4. ["<rootDir>/my-custom-reporter.js", {"banana": "yes", "pineapple": "no"}]
  5. ]
  6. }

自定義報(bào)告器模塊必須定義一個(gè)將 ?aGlobalConfig?和報(bào)告器選項(xiàng)作為構(gòu)造函數(shù)參數(shù)的類:

示例記者:

  1. // my-custom-reporter.js
  2. class MyCustomReporter {
  3. constructor(globalConfig, options) {
  4. this._globalConfig = globalConfig;
  5. this._options = options;
  6. }
  7. onRunComplete(contexts, results) {
  8. console.log('Custom reporter output:');
  9. console.log('GlobalConfig: ', this._globalConfig);
  10. console.log('Options: ', this._options);
  11. }
  12. }
  13. module.exports = MyCustomReporter;
  14. // or export default MyCustomReporter;

自定義報(bào)告器還可以通過從?getLastError?()方法返回錯(cuò)誤來強(qiáng)制 Jest 以非 0 代碼退出

  1. class MyCustomReporter {
  2. // ...
  3. getLastError() {
  4. if (this._shouldFail) {
  5. return new Error('my-custom-reporter.js reported an error');
  6. }
  7. }
  8. }

有關(guān)方法和參數(shù)類型的完整列表,請參閱Reporter接口封裝/笑話-記者/ src目錄/ types.ts

resetMocks [boolean]

默認(rèn)值︰?false?

每次測試前自動重置模擬狀態(tài)。相當(dāng)于?jest.resetAllMocks()?每次測試前調(diào)用。這將導(dǎo)致任何模擬刪除其虛假實(shí)現(xiàn),但不會恢復(fù)其初始實(shí)現(xiàn)。

resetModules [boolean]

默認(rèn)值︰?false?

默認(rèn)情況下,每個(gè)測試文件都有自己獨(dú)立的模塊注冊表。啟用resetModules更進(jìn)一步,并在運(yùn)行每個(gè)單獨(dú)的測試之前重置模塊注冊表。這對于隔離每個(gè)測試的模塊非常有用,這樣本地模塊狀態(tài)就不會在測試之間發(fā)生沖突。這可以使用 以編程方式完成jest.resetModules()

resolver [string]

默認(rèn)值:?undefined?

此選項(xiàng)允許使用自定義解析器。這個(gè)解析器必須是一個(gè)節(jié)點(diǎn)模塊,它導(dǎo)出一個(gè)函數(shù),期望一個(gè)字符串作為要解析的路徑的第一個(gè)參數(shù),以及一個(gè)具有以下結(jié)構(gòu)的對象作為第二個(gè)參數(shù):

  1. {
  2. "basedir": string,
  3. "defaultResolver": "function(request, options)",
  4. "extensions": [string],
  5. "moduleDirectory": [string],
  6. "paths": [string],
  7. "packageFilter": "function(pkg, pkgdir)",
  8. "rootDir": [string]
  9. }

該函數(shù)應(yīng)該返回應(yīng)該解析的模塊的路徑,或者如果找不到模塊則拋出錯(cuò)誤。

注意:作為選項(xiàng)傳遞的 ?defaultResolver ?是 Jest 默認(rèn)解析器,這在你編寫自定義解析器時(shí)可能很有用。它采用與你的自定義參數(shù)相同的參數(shù),例如?(request, options)?.

例如,如果要尊重 ?Browserify ?的"browser"field,可以使用以下配置:

  1. {
  2. ...
  3. "jest": {
  4. "resolver": "browser-resolve"
  5. }
  6. }

通過組合?defaultResolver?,?packageFilter?我們可以實(shí)現(xiàn)一個(gè)?package.json?“預(yù)處理器”,它允許我們改變默認(rèn)解析器解析模塊的方式。例如,假設(shè)我們想要使用該字段("module"如果它存在),否則回退到"main":

  1. {
  2. ...
  3. "jest": {
  4. "resolver": "my-module-resolve"
  5. }
  6. }
  1. // my-module-resolve package
  2. module.exports = (request, options) => {
  3. // Call the defaultResolver, so we leverage its cache, error handling, etc.
  4. return options.defaultResolver(request, {
  5. ...options,
  6. // Use packageFilter to process parsed `package.json` before the resolution (see https://www.npmjs.com/package/resolve#resolveid-opts-cb)
  7. packageFilter: pkg => {
  8. return {
  9. ...pkg,
  10. // Alter the value of `main` before resolving the package
  11. main: pkg.module || pkg.main,
  12. };
  13. },
  14. });
  15. };

restoreMocks [boolean]

默認(rèn)值︰?false?

每次測試前自動恢復(fù)模擬狀態(tài)。相當(dāng)于?jest.restoreAllMocks()?每次測試前調(diào)用。這將導(dǎo)致任何模擬刪除其虛假實(shí)現(xiàn)并恢復(fù)其初始實(shí)現(xiàn)。

rootDir [string]

默認(rèn):包含你的玩笑目錄的根目錄配置文件 或?qū)ackage.json 或?qū)?a rel="external nofollow" target="_blank" target="_blank">pwd如果沒有package.json被發(fā)現(xiàn)

Jest 應(yīng)該掃描其中的測試和模塊的根目錄。如果你將 Jest 配置放在你的內(nèi)部package.json并希望根目錄成為你的存儲庫的根目錄,則此配置參數(shù)的值將默認(rèn)為package.json.

通常,你需要將其設(shè)置為'src'或'lib',對應(yīng)于代碼在存儲庫中的存儲位置。

請注意,'<rootDir>'在任何其他基于路徑的配置設(shè)置中用作字符串標(biāo)記將引用回此值。因此,例如,如果你希望setupFiles配置條目指向env-setup.js項(xiàng)目根目錄下的文件,則可以將其值設(shè)置為["<rootDir>/env-setup.js"].

roots [array]

默認(rèn)值︰?["<rootDir>"]?

Jest 應(yīng)該用來搜索文件的目錄路徑列表。

有時(shí)你只希望 Jest 在單個(gè)子目錄中進(jìn)行搜索(例如,你的存儲庫中有一個(gè)src/目錄),但阻止它訪問存儲庫的其余部分。

注意:雖然rootDir主要用作在其他配置選項(xiàng)中重復(fù)使用的令牌,但被rootsJest 內(nèi)部用于定位測試文件和源文件。這也適用于從node_modules(__mocks__將需要位于其中之一roots) 中搜索模塊的手動模擬時(shí)。

注意:默認(rèn)情況下,roots只有一個(gè)條目,<rootDir>但在某些情況下,你可能希望在一個(gè)項(xiàng)目中擁有多個(gè)根,例如roots: ["<rootDir>/src/", "<rootDir>/tests/"].

runner [string]

默認(rèn): ?"jest-runner"?

此選項(xiàng)允許你使用自定義運(yùn)行程序而不是 Jest 的默認(rèn)測試運(yùn)行程序。跑步者的例子包括:

注意:runner屬性值可以省略jest-runner-包名的前綴。

要編寫測試運(yùn)行程序,請導(dǎo)出一個(gè)globalConfig在構(gòu)造函數(shù)中接受的類,并具有runTests帶有簽名的方法:

  1. async runTests(
  2. tests: Array<Test>,
  3. watcher: TestWatcher,
  4. onStart: OnTestStart,
  5. onResult: OnTestSuccess,
  6. onFailure: OnTestFailure,
  7. options: TestRunnerOptions,
  8. ): Promise<void>

如果你需要將測試運(yùn)行程序限制為僅串行運(yùn)行而不是并行執(zhí)行,則你的類應(yīng)該將屬性isSerial設(shè)置為true.

setupFiles [array]

默認(rèn)值:[]

運(yùn)行一些代碼以配置或設(shè)置測試環(huán)境的模塊的路徑列表。每個(gè) setupFile 將針對每個(gè)測試文件運(yùn)行一次。由于每個(gè)測試都在其自己的環(huán)境中運(yùn)行,因此這些腳本將在執(zhí)行測試代碼本身之前立即在測試環(huán)境中執(zhí)行。

還值得注意的是,setupFiles將在 setupFilesAfterEnv.

setupFilesAfterEnv [array]

默認(rèn)值:?[]?

在執(zhí)行套件中的每個(gè)測試文件之前,運(yùn)行一些代碼以配置或設(shè)置測試框架的模塊的路徑列表。由于setupFiles在環(huán)境中安裝測試框架之前執(zhí)行,此腳本文件為你提供了在環(huán)境中安裝測試框架后立即運(yùn)行某些代碼的機(jī)會。

如果你路徑相對于項(xiàng)目的根目錄,請包含<rootDir>在路徑字符串中,例如"<rootDir>/a-configs-folder".

例如,Jestjasmine通過對 jasmine API 進(jìn)行猴子修補(bǔ),為該工作提供了幾個(gè)插件。如果你想添加更多的 jasmine 插件(或者如果你想要一些自定義的、項(xiàng)目范圍的匹配器),你可以在這些模塊中這樣做。

注意:setupTestFrameworkScriptFile不贊成使用setupFilesAfterEnv.

setupFilesAfterEnvjest.config.js 中的示例數(shù)組:

  1. module.exports = {
  2. setupFilesAfterEnv: ['./jest.setup.js'],
  3. };

示例jest.setup.js文件

  1. jest.setTimeout(10000); // in milliseconds

slowTestThreshold [number]

默認(rèn):? 5?

測試被視為緩慢并在結(jié)果中報(bào)告的秒數(shù)。

snapshotResolver [string]

默認(rèn)值:?undefined?

可以解析 test<->snapshot 路徑的模塊的路徑。這個(gè)配置選項(xiàng)讓你自定義 Jest 在磁盤上存儲快照文件的位置。

示例快照解析器模塊:

  1. module.exports = {
  2. // resolves from test to snapshot path
  3. resolveSnapshotPath: (testPath, snapshotExtension) =>
  4. testPath.replace('__tests__', '__snapshots__') + snapshotExtension,
  5. // resolves from snapshot to test path
  6. resolveTestPath: (snapshotFilePath, snapshotExtension) =>
  7. snapshotFilePath
  8. .replace('__snapshots__', '__tests__')
  9. .slice(0, -snapshotExtension.length),
  10. // Example test path, used for preflight consistency check of the implementation above
  11. testPathForConsistencyCheck: 'some/__tests__/example.test.js',
  12. };

snapshotSerializers [array]

默認(rèn)值:

Jest 用于快照測試的快照序列化模塊的路徑列表。

Jest 具有用于內(nèi)置 JavaScript 類型、HTML 元素 (Jest 20.0.0+)、ImmutableJS (Jest 20.0.0+) 和 React 元素的默認(rèn)序列化器。有關(guān)更多信息,請參閱快照測試教程

示例序列化器模塊:

  1. // my-serializer-module
  2. module.exports = {
  3. serialize(val, config, indentation, depth, refs, printer) {
  4. return 'Pretty foo: ' + printer(val.foo);
  5. },
  6. test(val) {
  7. return val && val.hasOwnProperty('foo');
  8. },
  9. };

printer 是一個(gè)使用現(xiàn)有插件序列化值的函數(shù)。

要my-serializer-module用作序列化程序,配置如下:

  1. {
  2. ...
  3. "jest": {
  4. "snapshotSerializers": ["my-serializer-module"]
  5. }
  6. }

最后的測試如下:

  1. test(() => {
  2. const bar = {
  3. foo: {
  4. x: 1,
  5. y: 2,
  6. },
  7. };
  8. expect(bar).toMatchSnapshot();
  9. });

渲染快照:

  1. Pretty foo: Object {
  2. "x": 1,
  3. "y": 2,
  4. }

要使依賴項(xiàng)顯式而不是隱式,你可以調(diào)用expect.addSnapshotSerializer為單個(gè)測試文件添加模塊,而不是snapshotSerializers在 Jest 配置中添加其路徑。

可以在此處找到有關(guān)序列化程序 API 的更多信息。

testEnvironment [string]

默認(rèn)值︰?"jsdom"?

將用于測試的測試環(huán)境。Jest 中的默認(rèn)環(huán)境是通過jsdom的類似瀏覽器的環(huán)境。如果你正在構(gòu)建節(jié)點(diǎn)服務(wù),則可以使用該node選項(xiàng)來代替使用類似節(jié)點(diǎn)的環(huán)境。

通過@jest-environment在文件頂部添加一個(gè)docblock,你可以指定另一個(gè)用于該文件中所有測試的環(huán)境:

  1. /**
  2. * @jest-environment jsdom
  3. */
  4. test('use jsdom in this test file', () => {
  5. const element = document.createElement('div');
  6. expect(element).not.toBeNull();
  7. });

你可以創(chuàng)建自己的模塊,用于設(shè)置測試環(huán)境。模塊必須使用setup,teardown和runScript方法導(dǎo)出類。你還可以通過將變量分配給this.global對象來將變量從該模塊傳遞到你的測試套件- 這將使它們在你的測試套件中作為全局變量可用。

該類可以選擇公開一個(gè)異步handleTestEvent方法來綁定到由 觸發(fā)的事件jest-circus。通常情況下,jest-circus測試運(yùn)行將暫停,直到一個(gè)承諾從返回handleTestEvent得到滿足,除了未來事件:start_describe_definition,finish_describe_definition,add_hook,add_test或error(關(guān)于上行最新列表,你可以看看SyncEvent類型的類型定義)。這是由向后兼容性原因和process.on('unhandledRejection', callback)簽名引起的,但對于大多數(shù)用例來說,這通常不是問題。

測試文件中的任何 docblock pragma 都將傳遞給環(huán)境構(gòu)造函數(shù),并可用于每個(gè)測試的配置。如果 pragma 沒有值,它將出現(xiàn)在對象中,其值設(shè)置為空字符串。如果 pragma 不存在,則它不會出現(xiàn)在對象中。

注意:TestEnvironment 是沙盒化的。每個(gè)測試套件將在他們自己的測試環(huán)境中觸發(fā)設(shè)置/拆卸。

示例:

  1. // my-custom-environment
  2. const NodeEnvironment = require('jest-environment-node');
  3. class CustomEnvironment extends NodeEnvironment {
  4. constructor(config, context) {
  5. super(config, context);
  6. this.testPath = context.testPath;
  7. this.docblockPragmas = context.docblockPragmas;
  8. }
  9. async setup() {
  10. await super.setup();
  11. await someSetupTasks(this.testPath);
  12. this.global.someGlobalObject = createGlobalObject();
  13. // Will trigger if docblock contains @my-custom-pragma my-pragma-value
  14. if (this.docblockPragmas['my-custom-pragma'] === 'my-pragma-value') {
  15. // ...
  16. }
  17. }
  18. async teardown() {
  19. this.global.someGlobalObject = destroyGlobalObject();
  20. await someTeardownTasks();
  21. await super.teardown();
  22. }
  23. runScript(script) {
  24. return super.runScript(script);
  25. }
  26. async handleTestEvent(event, state) {
  27. if (event.name === 'test_start') {
  28. // ...
  29. }
  30. }
  31. }
  32. module.exports = CustomEnvironment;
  1. // my-test-suite
  2. let someGlobalObject;
  3. beforeAll(() => {
  4. someGlobalObject = global.someGlobalObject;
  5. });

testEnvironmentOptions [object]

默認(rèn)值:?{}?

將傳遞給testEnvironment. 相關(guān)選項(xiàng)取決于環(huán)境。例如,你可以覆蓋提供給jsdom 的選項(xiàng),例如{userAgent: "Agent/007"}.

testMatch [array]

(默認(rèn)值:?[ "**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)" ]?)

Jest 用于檢測測試文件的 glob 模式。默認(rèn)情況下,它會查找.js,.jsx,.ts和.tsx里面的文件__tests__夾,以及帶有后綴的任何文件.test或.spec(如Component.test.js或Component.spec.js)。它還會找到名為test.js或 的文件spec.js。

有關(guān)你可以指定的模式的詳細(xì)信息,請參閱micromatch包。

另見testRegex[字符串 | 大批],但請注意,你不能同時(shí)指定這兩個(gè)選項(xiàng)。

testPathIgnorePatterns [array]

默認(rèn)值︰?["node_modules"]?

在執(zhí)行測試之前與所有測試路徑匹配的正則表達(dá)式模式字符串?dāng)?shù)組。如果測試路徑匹配任何模式,它將被跳過。

這些模式字符串與完整路徑匹配。使用<rootDir>字符串標(biāo)記包含項(xiàng)目根目錄的路徑,以防止它意外忽略不同環(huán)境中可能具有不同根目錄的所有文件。例子:["<rootDir>/build/", "<rootDir>/node_modules/"]。

testRegex[string | array]

默認(rèn):? (/__tests__/.*|(\\.|/)(test|spec))\\.[jt]sx?$?

Jest 用來檢測測試文件的一個(gè)或多個(gè)模式。默認(rèn)情況下,它會查找.js,.jsx,.ts和.tsx里面的文件__tests__夾,以及帶有后綴的任何文件.test或.spec(如Component.test.js或Component.spec.js)。它還會找到名為test.js或 的文件spec.js。另見testMatch[數(shù)組],但請注意,你不能同時(shí)指定這兩個(gè)選項(xiàng)。

以下是默認(rèn)正則表達(dá)式的可視化:

  1. ├── __tests__
  2. │ └── component.spec.js # test
  3. │ └── anything # test
  4. ├── package.json # not test
  5. ├── foo.test.js # test
  6. ├── bar.spec.jsx # test
  7. └── component.js # not test

注意:testRegex將嘗試使用絕對文件路徑檢測測試文件,因此,具有名稱匹配的文件夾將運(yùn)行所有文件作為測試

testResultsProcessor [string]

默認(rèn)值:?undefined?

此選項(xiàng)允許使用自定義結(jié)果處理器。這個(gè)處理器必須是一個(gè)節(jié)點(diǎn)模塊,它導(dǎo)出一個(gè)函數(shù),期望一個(gè)具有以下結(jié)構(gòu)的對象作為第一個(gè)參數(shù)并返回它:

  1. {
  2. "success": bool,
  3. "startTime": epoch,
  4. "numTotalTestSuites": number,
  5. "numPassedTestSuites": number,
  6. "numFailedTestSuites": number,
  7. "numRuntimeErrorTestSuites": number,
  8. "numTotalTests": number,
  9. "numPassedTests": number,
  10. "numFailedTests": number,
  11. "numPendingTests": number,
  12. "numTodoTests": number,
  13. "openHandles": Array<Error>,
  14. "testResults": [{
  15. "numFailingTests": number,
  16. "numPassingTests": number,
  17. "numPendingTests": number,
  18. "testResults": [{
  19. "title": string (message in it block),
  20. "status": "failed" | "pending" | "passed",
  21. "ancestorTitles": [string (message in describe blocks)],
  22. "failureMessages": [string],
  23. "numPassingAsserts": number,
  24. "location": {
  25. "column": number,
  26. "line": number
  27. }
  28. },
  29. ...
  30. ],
  31. "perfStats": {
  32. "start": epoch,
  33. "end": epoch
  34. },
  35. "testFilePath": absolute path to test file,
  36. "coverage": {}
  37. },
  38. ...
  39. ]
  40. }

testRunner [string]

默認(rèn)值︰?jasmine2?

此選項(xiàng)允許使用自定義測試運(yùn)行器。默認(rèn)為 jasmine2??梢酝ㄟ^指定測試運(yùn)行器實(shí)現(xiàn)的路徑來提供自定義測試運(yùn)行器。

測試運(yùn)行器模塊必須導(dǎo)出具有以下簽名的函數(shù):

  1. function testRunner(
  2. globalConfig: GlobalConfig,
  3. config: ProjectConfig,
  4. environment: Environment,
  5. runtime: Runtime,
  6. testPath: string,
  7. ): Promise<TestResult>;

可以在我們的默認(rèn)jasmine2 測試運(yùn)行程序包中找到此類功能的示例。

testSequencer [string]

默認(rèn): ?@jest/test-sequencer?

此選項(xiàng)允許你使用自定義音序器而不是 Jest 的默認(rèn)值。sort可以選擇返回一個(gè) Promise。

示例:

按字母順序?qū)y試路徑進(jìn)行排序。

  1. // testSequencer.js
  2. const Sequencer = require('@jest/test-sequencer').default;
  3. class CustomSequencer extends Sequencer {
  4. sort(tests) {
  5. // Test structure information
  6. // https://github.com/facebook/jest/blob/6b8b1404a1d9254e7d5d90a8934087a9c9899dab/packages/jest-runner/src/types.ts#L17-L21
  7. const copyTests = Array.from(tests);
  8. return copyTests.sort((testA, testB) => (testA.path > testB.path ? 1 : -1));
  9. }
  10. }
  11. module.exports = CustomSequencer;

在你的 Jest 配置文件中使用它,如下所示:

  1. {
  2. "testSequencer": "path/to/testSequencer.js"
  3. }

testTimeout [number]

默認(rèn): ?5000?

默認(rèn)測試超時(shí)時(shí)間單位為毫秒。

testURL [string]

默認(rèn):? http://localhost?

此選項(xiàng)設(shè)置 jsdom 環(huán)境的 URL。它反映在諸如location.href.

timers [string]

默認(rèn)值︰?real?

將此值設(shè)置為legacy或fake允許對諸如setTimeout. 當(dāng)一段代碼設(shè)置了我們不想在測試中等待的長時(shí)間超時(shí)時(shí),假定時(shí)器很有用。

如果值為modern,@sinonjs/fake-timers將用作實(shí)現(xiàn)而不是 Jest 自己的遺留實(shí)現(xiàn)。這將是 Jest 27 中默認(rèn)的假實(shí)現(xiàn)。

transform [object]

默認(rèn):? {"^.+\\.[jt]sx?$": "babel-jest"}?

從正則表達(dá)式到轉(zhuǎn)換器路徑的映射。轉(zhuǎn)換器是一個(gè)模塊,提供轉(zhuǎn)換源文件的同步功能。例如,如果你希望能夠在 node 尚不支持的模塊或測試中使用新的語言功能,你可以插入許多編譯器中的一個(gè),將 JavaScript 的未來版本編譯為當(dāng)前版本。示例:參見examples/ typescript示例或webpack 教程。

此類編譯器的示例包括:

你可以將配置傳遞給轉(zhuǎn)換器,{filePattern: ['path-to-transformer', {options}]}例如,為非默認(rèn)行為配置 babel-jest,{"\\.js$": ['babel-jest', {rootMode: "upward"}]}

注意:除非文件已更改,否則每個(gè)文件只運(yùn)行一次轉(zhuǎn)換器。在轉(zhuǎn)換器的開發(fā)過程中,運(yùn)行 Jest--no-cache以經(jīng)常刪除 Jest 的緩存會很有用。

注意:當(dāng)添加額外的代碼轉(zhuǎn)換器時(shí),這將覆蓋默認(rèn)配置并且babel-jest不再自動加載。如果要使用它來編譯 JavaScript 或 Typescript,則必須通過添加{"^.+\\.[jt]sx?$": "babel-jest"}到 transform 屬性來顯式定義它。查看babel-jest 插件

transformIgnorePatterns [array]

默認(rèn): ?["/node_modules/", "\\.pnp\\.[^\\\/]+$"]?

轉(zhuǎn)換前與所有源文件路徑匹配的正則表達(dá)式模式字符串?dāng)?shù)組。如果測試路徑與任何模式匹配,則不會對其進(jìn)行轉(zhuǎn)換。

這些模式字符串與完整路徑匹配。使用<rootDir>字符串標(biāo)記包含項(xiàng)目根目錄的路徑,以防止它意外忽略不同環(huán)境中可能具有不同根目錄的所有文件。

例子:["<rootDir>/bower_components/", "<rootDir>/node_modules/"]。

有時(shí)會發(fā)生(尤其是在 React Native 或 TypeScript 項(xiàng)目中)第三方模塊發(fā)布為未轉(zhuǎn)譯。由于里面的所有文件node_modules默認(rèn)都沒有被轉(zhuǎn)換,Jest 不會理解這些模塊中的代碼,從而導(dǎo)致語法錯(cuò)誤。為了克服這個(gè)問題,你可以使用transformIgnorePatterns允許轉(zhuǎn)譯此類模塊。你會在React Native Guide 中找到這個(gè)用例的一個(gè)很好的例子。

unmockedModulePathPatterns [array]

默認(rèn)值:?[]?

在模塊加載器將自動為它們返回模擬之前,與所有模塊匹配的正則表達(dá)式模式字符串?dāng)?shù)組。如果模塊的路徑與此列表中的任何模式匹配,則模塊加載器不會自動模擬它。

這對于一些幾乎始終用作實(shí)現(xiàn)細(xì)節(jié)的常用“實(shí)用程序”模塊很有用(例如下劃線/低破折號等)。通常最好的做法是讓這個(gè)列表盡可能小,并且在單獨(dú)的測試中總是使用顯式j(luò)est.mock()/jest.unmock()調(diào)用。對于測試的其他讀者來說,明確的每個(gè)測試設(shè)置更容易推斷測試將運(yùn)行的環(huán)境。

通過jest.mock()在測試文件的頂部顯式調(diào)用,可以在單個(gè)測試中覆蓋此設(shè)置。

verbose [boolean]

默認(rèn)值︰?false?

指示是否應(yīng)在運(yùn)行期間報(bào)告每個(gè)單獨(dú)的測試。執(zhí)行后,所有錯(cuò)誤也仍將顯示在底部。請注意,如果只有一個(gè)測試文件正在運(yùn)行,它將默認(rèn)為true.

watchPathIgnorePatterns [array]

默認(rèn)值:?[]?

在監(jiān)視模式下重新運(yùn)行測試之前,與所有源文件路徑匹配的 RegExp 模式數(shù)組。如果文件路徑與任何模式匹配,則在更新時(shí)不會觸發(fā)重新運(yùn)行測試。

這些模式與完整路徑匹配。使用<rootDir>字符串標(biāo)記包含項(xiàng)目根目錄的路徑,以防止它意外忽略不同環(huán)境中可能具有不同根目錄的所有文件。例子:?["<rootDir>/node_modules/"]?。

即使此處未指定任何內(nèi)容,觀察者也會忽略對任何隱藏文件和目錄的更改,即以點(diǎn) ( .)開頭的文件和文件夾。

watchPlugins [array]

默認(rèn)值:?[]?

此選項(xiàng)允許你使用自定義手表插件。在此處閱讀有關(guān)手表插件的更多信息。

手表插件的例子包括:

注意:?watchPlugins?屬性值中的值可以省略?jest-watch-包名的前綴?。

// [string]

無默認(rèn)

此選項(xiàng)允許在?package.json?. 將注釋文本作為該鍵的值包含在?package.json?.

示例:

  1. {
  2. "name": "my-project",
  3. "jest": {
  4. "http://": "Comment goes here",
  5. "verbose": true
  6. }
  7. }


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號