日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

React 16 Jest单元测试 之 Jest工具

發布時間:2025/4/16 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 React 16 Jest单元测试 之 Jest工具 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載地址

React 16 Jest單元測試 之 Jest工具

項目初始化【這里使用之前的項目,節省時間】

項目初始化地址

https://github.com/durban89/webpack4-react16-reactrouter-demo.git tag:v_1.0.23

?

拉取

git clone https://github.com/durban89/webpack4-react16-reactrouter-demo.git cd webpack4-react16-reactrouter-demo git fetch origin git checkout v_1.0.23 npm install

Jest有很多特定的功能,可以作為單獨的包來使用,下面羅列下官網提供的一些有用的包

環境

node --version v8.11.3

node的安裝包方法我就不介紹了,如果看了這么久我的分享還是不知道的話,可以繼續看看前面文章,這里簡單提示下,安裝命令如下

npm install package_name --save // 生產安裝 npm install package_name --save-dev // 開發安裝

1、jest-changed-files

此工具提供的功能是標識在git或hg中被修改過的文件,提供的方法如下

getChangedFilesForRoots 返回一個promise,該promise將解析為具有已更改文件和repos的對象。

findRepos 返回一個promise,該promise將解析為指定路徑中包含的一組存儲庫。

?

演示如下

const { getChangedFilesForRoots } = require('jest-changed-files');getChangedFilesForRoots(['./'], {lastCommit: true, }).then(result => console.log(result.changedFiles));

運行后得到類似如下結果

Set {'/xxx/webpack-react-demo/src/__tests__/jest_mock_names.test.js' }

?

2、jest-diff

用于可視化數據變化的工具。導出一個比較任意類型的兩個值的函數,并返回一個"pretty-printed"的字符串,說明兩個參數之間的差異。

演示如下

const diff = require('jest-diff');const a = { a: { b: { c: 5 } } }; const b = { a: { b: { c: 6 } } };const result = diff(a, b);console.log(result);

運行后輸出的結果類似如下

- Expected + ReceivedObject {"a": Object {"b": Object { - "c": 5, + "c": 6,},},}

?

3、jest-docblock

用于提取和解析JavaScript文件頂部注釋的工具。導出各種函數來操作注釋塊內的數據。

演示如下

const { parseWithComments } = require('jest-docblock');const code = `/*** 這是一個例子* * @author durban* */console.log('Hello Jest!'); `;const parsed = parseWithComments(code); console.log(parsed);

運行后輸出結果類似如下

{ comments: ' /**\n這是一個例子\n\n \n/\n console.log(\'Hello Jest!\');',pragmas: { author: 'durban' } }

?

4、jest-get-type

標識任何JavaScript值的基本類型的模塊。導出一個函數,該函數返回一個字符串,其值的類型作為參數傳遞。

演示如下

const getType = require('jest-get-type');const array = [1, 2, 3]; const nullvalue = null; const undefinedValue = undefined;console.log(getType(array)); console.log(getType(nullvalue)); console.log(getType(undefinedValue));

運行后輸出結果類似如下

array null undefined

?

5、jest-validate

用于驗證用戶提交的配置的工具。

導出一個帶有兩個參數的函數:用戶的配置和包含示例配置和其他選項的對象。

返回值是一個具有兩個屬性的對象,如下:

hasDeprecationWarnings 一個布爾值,指示提交的配置是否具有棄用警告

isValid 一個布爾值,指示配置是否正確。

?

演示如下

const { validate } = require('jest-validate');const configByUser = {tranform: '<rootDir>/node_modules/my-custom-packages', };const result = validate(configByUser, {comment: ' Documentation: http://custom-docs.com',exampleConfig: {tranform: '<rootDir>/node_modules/jest-validate',}, });console.log(result);

運行后輸出結果類似如下

{ hasDeprecationWarnings: false, isValid: true }

?

6、jest-worker

用于并行化任務的模塊。

導出一個類Worker,它接受Node.js模塊的路徑,并允許您調用模塊的導出方法,就好像它們在類方法中一樣,返回一個promise,當指定的方法在forked進程中完成它的執行時解析。

演示如下

創建一個task.js

module.exports = {Task: args => args, };

調用的代碼如下

const { default: Worker } = require('jest-worker');async function main() {const worker = new Worker(require.resolve('./task.js'));const results = await Promise.all([worker.Task({ args: '1' }),worker.Task({ args: '2' }),]);console.log(results); }main();

運行后輸出結果類似如下

[ { args: '1' }, { args: '2' } ]

這里用了一個看起來很奇怪的用法,其實不然,仔細了解下node包的機制,還是很好理解的

const { default: Worker } = require('jest-worker');

如果你的node版本支持import的話可以替換為,【我試了下10.5.0這個nodejs版本還是不支持呀】

import Worker from 'jest-worker';

?

7、pretty-format

導出將任何JavaScript值轉換為人類可讀字符串的函數。

支持開箱即用的所有內置JavaScript類型,并允許通過用戶定義的特定應用程序類型的擴展。

演示如下

const prettyFormat = require('pretty-format');const val = { object: {} }; val.circuleReference = val; val[Symbol('key')] = 'key'; val.map = new Map([['property', 'value']]); val.array = [-0, Infinity, NaN];console.log(prettyFormat(val));

運行后輸出結果類似如下

Object {"array": Array [-0,Infinity,NaN,],"circuleReference": [Circular],"map": Map {"property" => "value",},"object": Object {},Symbol(key): "key", }

?

Jest的包遠不止這些,有興趣的可以繼續去https://github.com/facebook/jest/tree/master/packages這里觀望自己想要的

?

項目實踐地址

https://github.com/durban89/webpack4-react16-reactrouter-demo.git tag:v_1.0.24

總結

以上是生活随笔為你收集整理的React 16 Jest单元测试 之 Jest工具的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。