跳到主要内容
版本:26.x.

jestオブジェクト

笑话オブジェクトは,すべてのテストファイル内自动的にスコープされ。笑话オブジェクトのメソッドはモックの作成に役立ち,Jestの全体的な動作を制御できます。从'@ jest / globals'导入{jest}をを介し明显的にインポートすることもできます。

モックモジュール

JEST.DISABLEAUTOMOCK()

モジュールローダーの自動モック機能を無効にします。

詳細については,配置汽车セクションも参照してください。

このこのメソッドが呼び出さ呼び出された后はは后はは要求()关关は各の(モックではなく)の本物を返すようになりなり。

Jestのの:

{
“汽车” 真的
}

例子:

// utils.js.
出口 默认 {
授权 = > {
返回 “令牌” ;
}
} ;
// __tests __ / disableautomocking.js
进口 利用者 '../utils' ;
笑话 脱言 ;
测试 '原始实施' = > {
//现在我们有原始实施,
//即使我们在jest配置中设置自动锁
预计 利用者 授权 成为 “令牌” ;
} ;

この関数はモックしたい依存関係が,モックが要らないものよりもはるかに少ないシナリオがある場合に便利です。例えば”,实现细节“として分類されるのが妥当な大量の依存関係を持つモジュールのテスト書く場合,それらをモックしたいとは思わないでしょう。

Examples of dependencies that might be considered "implementation details" are things ranging from language built-ins (e.g. Array.prototype methods) to highly common utility methods (e.g. underscore/lo-dash, array utilities, etc) and entire libraries like React.js.

メソッドチェーンのために笑话オブジェクトを返します。

注意:このメソッドは以前は汽车自动化と呼ばれていたた。Babel-Jest.を使用しているいるいるは,脱言の呼び出しは自动的にの先头で行れます。この动作を避けるは汽车自动化を明示的にに使用し下载。

jest.enableautomock()

モジュールモジュールで自动モック机械设计

メソッドチェーンのために笑话オブジェクトを返します。

詳細については,配置汽车セクションも参照してください。

例子:

// utils.js.
出口 默认 {
授权 = > {
返回 “令牌” ;
}
isa授权 秘密 = > 秘密 ===. '巫师'
} ;
// __tests __ / eNableAutomocking.js
笑话 Enableautocock. ;
进口 利用者 '../utils' ;
测试 '原始实施' = > {
//ここここでははモックモックさててい
预计 利用者 授权 _isMockFunction Tobeththy. ;
预计 利用者 isa授权 _isMockFunction Tobeththy. ;
} ;

注意:このメソッドは以前は自动锁定と呼ばれていたた。Babel-Jest.を使用しているいるいるは,Enableautocock.の呼び出しは自动的にの先头で行れます。この动作を避けるは自动锁定を明示的にに使用し下载。

jest.createmockfrommodule(modulename)

jestバージョン26.0.0以上で名录

次のエイリアスでも使用可能:.genmockfrommodule(modulename)

介绍了自动,自动モックに対してに対してに対してしー化をししてて化をモジュールししして。

自動モックが持つ機能を拡張したマニュアルモックを作物成ししたいにに利です。

例子:

// utils.js.
出口 默认 {
授权 = > {
返回 “令牌” ;
}
isa授权 秘密 = > 秘密 ===. '巫师'
} ;
// ___tests __ / createmockfrommodule.test.js
const 利用者 = 笑话 createmockfrommodule. '../utils' 默认 ;
利用者 isa授权 = 笑话 FN. 秘密 = > 秘密 ===. '不是向导' ;
测试 '由jest.createMockFromModule创建的实现' = > {
预计 利用者 授权 嘲笑 Tobeththy. ;
预计 利用者 isa授权 '不是向导' toequal. 真的 ;
} ;

createmockfrommodule.がが以のデータ型ををモック方法です。

关节

创建一个新的模拟功能。新功能没有正式参数,而叫将返回未定义的。此功能也适用于异步功能。

クラス

创造一个新的课程。维护原始类的接口,所有类成员函数和属性都将被嘲笑。

オブジェクト

ディープクローンされれます。

创建一个新的空数组,忽略原始。

プリミティブ型

创建具有与原始属性相同的基本值的新属性。

例子:

// example.js.
模块。出口s = {
功能:功能方形(A,B){
返回* b;
},
异步:异步函数异步(A,B){
const结果=等待a * b;
返回结果;
},
班级:新班级栏{
构造函数(){
this.array = [1,2,3];
}
foo(){}
},
目的: {
博兹:'foo',
酒吧: {
西兹:1,
嗡嗡声:[1,2,3],
},
},
阵列:[1,2,3],
数量:123,
字符串:'baz',
布尔:真实,
符号:符号。对于('a.b.c'),
};
// __tests __ / example.test.js
const 例子 = 笑话 createmockfrommodule. '。/例子' ;
测试 “应该运行示例代码” = > {
//掺杂のない新闻关有关部を作物成し。
预计 例子 功能 姓名 toequal. '正方形' ;
预计 例子 功能 长度 toequal. 0. ;
//异步函数与标准同步函数相同的处理。
预计 例子 功能 姓名 toequal. '正方形' ;
预计 例子 功能 长度 toequal. 0. ;
//异步函数与标准同步函数相同的处理。
预计 例子 异步 姓名 toequal. “asyncSquare” ;
预计 例子 异步 长度 toequal. 0. ;
//创建一个具有相同界面的新类,成员函数和属性映像。
预计 例子 班级 构造函数 姓名 toequal. '酒吧' ;
预计 例子 班级 Foo 姓名 toequal. 'foo' ;
预计 例子 班级 数组 长度 toequal. 0. ;
//创建一个深刻的克隆版本的原始对象。
预计 例子 目的 toequal. {
Baz. 'foo'
酒吧 {
菲律 1
嗡嗡声 [ ]
}
} ;
//创建一个新的空数组,忽略原始数组。
预计 例子 数组 长度 toequal. 0. ;
//创建一个与原始属性具有相同原始值的新属性。
预计 例子 数字 toequal. 123. ;
预计 例子 细绳 toequal. 'Baz' ;
预计 例子 布尔 toequal. 真的 ;
预计 例子 象征 toequal. 象征 为了 'a.b.c' ;
} ;

jest.mock.(modulename.那工厂那选项)

需要された际に自动モック化化モジュールのモックモックをモックモックモックモックモックモックモックの作物工厂选项はオプションです。例:

/ / banana.js
模块 出口 = = > '香蕉' ;
// __tests __ / test.js
笑话 嘲笑 '../香蕉' ;
const 香蕉 = 要求 '../香蕉' ; //香蕉将明确地嘲笑。
香蕉 ; //将返回“未定义”,因为该函数是自动模拟的。

第2次数はjestの自动モックによるを代わり代わりに明显的にモジュールファクトリ指定指定するするにしし。

笑话 嘲笑 '../modulename' = > {
返回 笑话 FN. = > 42. ;
} ;
//这运行指定为第二个参数的函数到“jest.mock`。
const modulename. = 要求 '../modulename' ;
modulename. ; //将返回'42';

デフォルトのエクスポートのes6モジュールで工厂パラメータパラメータ使用する合成,__esModule:真プロパティを指定する必要必要がますますます。通讯,このプロパティはbabel / typescriptによって生成されます,ここでは手で设定するがあります。默认という名前のプロパティをインポートします。

进口 modulename. { Foo } '../modulename' ;
笑话 嘲笑 '../modulename' = > {
返回 {
__esmodule. 真的
默认 笑话 FN. = > 42.
Foo 笑话 FN. = > 43.
} ;
} ;
modulename. ; / / 42を返します
Foo ; // 43を返します

第3次数は仮想モック作物作物するのに使使し - これはシステム内のどこもももないモジュールのモックです。

笑话 嘲笑
'../modulename'
= > {
/ *
*自定义实现一个在JS中不存在的模块,
*与生成的模块或反应本机中的本机模块一样。
* /
}
{ 虚拟的 真的 }
;

警告: (setuptestframeworkscriptfile.で指定される)セットアップファイルの中でモジュールをインポートすることは,全てのセットアップファイル内でインポートされるモジュールと同様に,対象となるモジュールがモックされるのを防ぐことができます。

jest.mock.によりモックされるモジュールは,jest.mock.を呼び出したファイル内でのみモックされます。モジュールをモックしたテストの後に実行したとしても,そのモジュールをインポートする別のファイルでは,本物のモジュールがインポートされます。

メソッドチェーンのために笑话オブジェクトを返します。

jest.unmock (moduleName)

指定したモジュールについて要求()した际に,モジュールシステムは决してモックしたを返さないこと设定しますますます(例えば例えば本物のモジュールをべきべき合并)。

このAPIの最も一般的なは,指定指定されたモジュールを与えられテストファイルファイルでテストしとてファイルででテストテストいるいるいる场场てているいる场

メソッドチェーンのために笑话オブジェクトを返します。

笑话。doMock (moduleName、工厂、选项)

Babel-Jest.をを用ししいるいる合,嘲笑の呼び出しは自动的にブロックの先头でれますこの振るを明亮的ににはこのメソッドをを使くださいくださいくださいてて。

この关节有用なな例のののててて异なる振るモックを用しししたいがられられ

摘要 = > {
笑话 重置模块 ;
} ;
测试 'moduleename 1' = > {
笑话 dom '../modulename' = > {
返回 笑话 FN. = > 1 ;
} ;
const modulename. = 要求 '../modulename' ;
预计 modulename. toequal. 1 ;
} ;
测试 'moduleename 2' = > {
笑话 dom '../modulename' = > {
返回 笑话 FN. = > 2 ;
} ;
const modulename. = 要求 '../modulename' ;
预计 modulename. toequal. 2 ;
} ;

ES6インポートでjest.domock()を使使するは,加加の手顺が必要。テストテスト要求をを使したくないない,次の手顺に従っください。

  • __esModule:真プロパティを指定する必要があります(詳細についてはjest.mock ()APIを参照してください)。
  • 静的ES6モジュールのインポートはの先头で行われのでのでので,代わりに进口()をを用して动的ににする必要がます。
  • 最後に,動的インポートをサポートする環境が必要です。初期設定については,使用巴别塔を参照してください。次次,プラグインbabel-plugin-dynamic-import-node,または同等のものをbabelの设定に追加し,节点での动的インポートを有效にし。
摘要 = > {
笑话 重置模块 ;
} ;
测试 'moduleename 1' = > {
笑话 dom '../modulename' = > {
返回 {
__esmodule. 真的
默认 'default1'
Foo 'foo1'
} ;
} ;
返回 进口 '../modulename' 然后 modulename. = > {
预计 modulename. 默认 toequal. 'default1' ;
预计 modulename. Foo toequal. 'foo1' ;
} ;
} ;
测试 'moduleename 2' = > {
笑话 dom '../modulename' = > {
返回 {
__esmodule. 真的
默认 'default2'
Foo 'foo2'
} ;
} ;
返回 进口 '../modulename' 然后 modulename. = > {
预计 modulename. 默认 toequal. 'default2' ;
预计 modulename. Foo toequal. 'foo2' ;
} ;
} ;

メソッドチェーンのために笑话オブジェクトを返します。

jest.dontmock(moduleename)

Babel-Jest.をを用ししいるいる合,揭发の呼び出しは自动的にブロックの先头でれますこの振るを明亮的ににはこのメソッドをを使くださいくださいくださいてて。

メソッドチェーンのために笑话オブジェクトを返します。

jest.setmock(moduleename,moduleexports)

指定指定されたたモジュールについてシステムががべきべきオブジェクト明显的に与えます。

有时,有时间自动生成的模块模块系统通常提供您的测试需求不足以提供足够的足够足以。通讯そのそのようなな状况は当该のモジュールモジュールにより适しマニュアルモックをとても稀が,マニュアルモックでです的に対して适切テスト内でモックをするテスト内でをあり必要があるケースがあります。

これらの稀なでは,このapiででモジュールシステムのモックモジュールのレジストリののスロットににで设定设定ことができことができ

メソッドチェーンのために笑话オブジェクトを返します。

注意:このapiの代わりにjest.mock ()を利用することをお勧めします。jest.mock.APIの第2引ははエクスポートたモジュールオブジェクトの代替となるのファクトリをを指定できでき

Jest.requireAcctual(Modulename)

モジュールがモックしたものを受け取る设定であるかを确认せず,モックではない本物のモジュールを返すようになります。

例子:

笑话 嘲笑 '../mymodule' = > {
//要求原始模块不被嘲笑......
const originalModule = 笑话 请求 '../mymodule' ;
返回 {
__esmodule. 真的 //处理ESModules时使用它
...... originalModule
getrandom. 笑话 FN. mockreturnvalue. 10.
} ;
} ;
const getrandom. = 要求 '../mymodule' getrandom. ;
getrandom. ; //总是返回10

jest.requireMock (moduleName)

モジュールが通常通り需要されるかを確認せず,本物のモジュールではないモックを返すようになります。

jest.resetmodules()

モジュールのレジストリ - 全ての需要されたモジュール - をリセットします。

例子:

const sum1 = 要求 '../和' ;
笑话 重置模块 ;
const sum2 = 要求 '../和' ;
sum1 ===. sum2 ;
//> false(SUM模块都是SUM模块的“实例”。)

テストにおける例:

摘要 = > {
笑话 重置模块 ;
} ;
测试 “工作” = > {
const = 要求 '../和' ;
} ;
测试 '工作也是' = > {
const = 要求 '../和' ;
// sum是来自上一个测试的SUM模块的不同副本。
} ;

メソッドチェーンのために笑话オブジェクトを返します。

Jest.isolateModules(FN)

Jest.isolateModules(FN)比…更进一步jest.resetmodules()并为在回调函数内加载的模块创建一个沙箱注册表。这对于隔离每个测试的特定模块非常有用,以便本地模块状态在测试之间不会发生冲突。

mymodule. ;
笑话 isolatemodules. = > {
mymodule. = 要求 'mymodule' ;
} ;
const 其他特异性统计学 = 要求 'mymodule' ;

モック关节

JEST.FN(实施)

新闻,未使用のモック关节を返します。オプションでモックに対する実装。

const mockFn = 笑话 FN. ;
mockFn ;
预计 mockFn TohaveBeencalled. ;
//具有模拟实现:
const rethentrue. = 笑话 FN. = > 真的 ;
安慰 日志 rethentrue. ; / /正确;

jest.ismockfunction(fn)

[关键词相关数目どうかを返し。

jest.spyon(对象,methodname)

jest.fn.と同様の关关数作作作作作者eplies对象[methodname]へのコールもも装配しますjestのモック关节を返します。

注意:デフォルトでは,jest.spyon.スパイ化学されメソッドは他の大厦のととは异なる振るです元の关键网上书したいたいたいたい场たいたいは,jest.spyon(对象,methodname)。嘲笑Implementation(() => customImplementation)または对象[methodname] = jest.fn(()=> customimplingation);を使用して下さい。

例子:

const 视频 = {
{
返回 真的 ;
}
} ;
模块 出口 = 视频 ;

テストの例:

const 视频 = 要求 “/视频。” ;
测试 '播放视频' = > {
const 间谍 = 笑话 监视 视频 “玩” ;
const isPlaying = 视频 ;
预计 间谍 TohaveBeencalled. ;
预计 isPlaying 成为 真的 ;
间谍 模仿者 ;
} ;

jest.spyon(对象,方法名称,acceptype?)

Jest 22.1.0+からからjest.spyon.メソッドはオプションの第3次数AccessType.を取るようになりました。このこの数には'得到'または'放'を指定することができ,それぞれゲッタやセッタをスパイしたい合并に利です。

例子:

const 视频 = {
//这是一个getter!
得到 {
返回 真的 ;
}
} ;
模块 出口 = 视频 ;
const 声音的 = {
_体积 错误的
//它是一个setter!
体积 价值 {
这个 _体积 = 价值 ;
}
得到 体积 {
返回 这个 _体积 ;
}
} ;
模块 出口 = 声音的 ;

テストの例:

const 声音的 = 要求 '。/声音的' ;
const 视频 = 要求 “/视频。” ;
测试 '播放视频' = > {
const 间谍 = 笑话 监视 视频 “玩” '得到' ; //我们通过'get'
const isPlaying = 视频 ;
预计 间谍 TohaveBeencalled. ;
预计 isPlaying 成为 真的 ;
间谍 模仿者 ;
} ;
测试 播放音频的 = > {
const 间谍 = 笑话 监视 声音的 '体积' '放' ; //我们传递'set'
声音的 体积 = 100. ;
预计 间谍 TohaveBeencalled. ;
预计 声音的 体积 成为 100. ;
间谍 模仿者 ;
} ;

Jest.ClearAllMocks()

清除Mock.Calls.模拟所有模拟的属性。相当于呼叫.mockclear()在每个模拟函数上。

メソッドチェーンのために笑话オブジェクトを返します。

jest.resetallmocks()

重置所有模拟的状态。相当于呼叫.mockreset()在每个模拟函数上。

メソッドチェーンのために笑话オブジェクトを返します。

jest.restoreallmocks()

全てのモックを初期値に戻します。相当于呼叫.mockrestore()在每个模拟函数上。注意,jest.restoreallmocks()仅在使用创建模拟时有效jest.spyon.;其他模拟需要您手动恢复它们。

モックタイマー

jest.useFakeTimers(实现?:“现代”|“遗产”)

指示Jest使用标准计时器功能的假版(索取setInterval清除时间clearIntervalnextTicksetImmediateClearimmediate日期)。

如果你通过了'遗产'作为一个论点,将使用jest的遗留实施而不是一个基于@ sinonjs /假时日期のような追加のタイマーもモックします。'现代的'がjest 27のデフォルトの动作になります。

メソッドチェーンのために笑话オブジェクトを返します。

jest.userealtimers()

jestに标准タイマー关关数のののバージョンを使。

メソッドチェーンのために笑话オブジェクトを返します。

jest.runallticks()

-Taskキューキュー管理し(通常は节点でprocess.nexttick.経由でやり取りします)。

このAPIが呼ばれた場合,process.nexttick.経由経由でキューイングイングされたのの中の微型任务管理されます。

jest.runAllTimers ()

竭尽全力-task队列(即,排队排队的所有任务settimout()setInterval (), 和setimmediate())和-task队列(通常通过节点界面接口process.nexttick.)。

调用此API时,将执行所有挂起的宏任务和微任务。如果这些任务本身安排新任务,那么队列中没有更多的任务将不断耗尽。

このapiはsettimout()setInterval ()コールバックが実行されたた后后でででのみのみのみのみのみのみのみようをををしてするに,テスト中に同するに,テスト中ににに沉积物关有关文动作させるせるにに便です计时器模拟ドキュメントを参照してください。

jest.runallimmediates()

setimmediate()によってキューイングイングされれた全てタスクをを处处ししし

注:この关键は现代のフェイクタイマーのの装ををしているいるはは利用できません

jest.advanceTimersByTime (msToRun)

jestバージョン22.0.0上上で名录

次の别名目でも同様となります:.runtrimerstotime()

宏观任务キューのみを実行します(つまり,settimout()setInterval ()setimmediate()によってキューイングされた全てのタスクです)。

このapiが呼び出される,すべてのタイマーはMstorun.ミリ秒で进みます。このこのタイムフレームで実実されるであろ,全て全てsettimout()またはsetInterval ()経由でキューイングされ保留中の“宏任务”が実行さますます。此外,如果这些宏任务调度将在同一时间框架内执行的新宏任务,那么将执行这些宏任务,直到没有更多宏任务剩余在队列中,应该在内部运行Mstorun.毫秒。

jest.runOnlyPendingTimers ()

现时点で保留中の宏观任务のみのみ実行し(つまりこの时尚までにsettimout()setInterval ()によってキューイングされれタスクのみですですですですですの宏任务が新闻宏任务

このapiはテスト対象のががsettimout()が新闻なsettimout()

JEST.ADVAMACTIMERSTONEXTTIMER(步骤)

通过所需的毫秒推进所有计时器,以便仅运行下一个时刻/间隔。

可选地,您可以提供脚步,所以它会运行脚步下次超时/间隔的数量。

jest.clearAllTimers ()

タイマーシステムがが保留ししいるあらゆるタイマーをを削除しし

つまり,(まだ実行されていないスケジュールされたののについて,削除され,将来にわたって実れることはないいう事です。

jest.gettimercount()

返回仍然留下的假计时器数量。

jest.setsystemtime(现在?:编号|日期)

伪のタイマーで使使使れるれるをを设定します実行ののユーザーによるシステムクロックの変更するシミュレートししシステムクロックの変更するシミュレートしますが现の変更に影响しますががが起刻に影响しますががが起起タイマのようますますががタイマ内部で生长するものはは影响しません。jest.setSystemTime ()が呼び出されなかったたたとに,正式ににし。

注:この关键は现代フェイクフェイクの実装配をしている场にに利用できます

jest.getRealsystemtime()

时代をモックしてているいる合书,Date.now ()もモックされます。何らかの理由で本島の現在時刻にアクセスする必要がある場合は,この関数を呼び出すことができます。

注:この关键は现代フェイクフェイクの実装配をしている场にに利用できます

その他

jest.settimeout(超时)

テストののますますますますますますますます。

注意:このこのメソッドが呼ば呼ばれなかった场,デフォルトのタイムアウト间距は5秒です。

注意:如果要设置所有测试文件的超时,则会在此处设置一个好地方setupfilessafterenv.

例子:

笑话 索取 1000 ; // 1秒

jest.retrytimes()

运行失败的测试,直到它们通过或在最大重试次数耗尽之前。这只适用于jest-circus!!

テストにおける例:

笑话 重试 3. ;
测试 “失败” = > {
预计 真的 成为 错误的 ;
} ;

メソッドチェーンのために笑话オブジェクトを返します。