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

嗯presso de syync

Primeiro,Aties o Suporte Para Babel Em Jest Conforme DocumentAdo No Guia de介绍

让我们实现一个模块,该模块从API获取用户数据并返回用户名。

// user.js.
进口 要求 '。/要求' ;
出口 功能 getusername. 用户身份 {
返回 要求 '/用户/' + 用户身份 然后 用户 => 用户 姓名 ;
}

在上述实施中,我们期待Request.js.模块返回承诺。我们将呼叫链接然后接收用户名。

现在想象一下Request.js.转到网络并获取某些用户数据:

// Request.js.
const http. = 要求 'http' ;
出口 默认 功能 要求 URL. {
返回 新的 诺言 解决 => {
//iStoéMum调查De UmaRequisiçãoHTTP,POR调用帕拉Buscar
// Dados deUsuáriode Uma API。
// este moduloestádendosimulado em __mocks __ / request.js
http. 得到 { 小路 URL. } 回复 => {
数据 = '' ;
回复 '数据' _数据 => 数据 + = _数据 ;
回复 '结尾' => 解决 数据 ;
} ;
} ;
}

因为我们不想在我们的测试中转到网络,所以我们将为我们的手册创建手动模拟Request.js.模块在__mocks__文件夹(文件夹区分大小写,__mocks__不管用)。Pode Ficar Parecido Com:

// __tests __ / user-test.js
笑话 嘲笑 '../要求' ;
进口 * 作为 用户 '../用户' ;
// aafirmaçãopara uma proMessa deve Ser Retornada。它('funciona com proMessas',()=> {
预计 断言 1 ;
返回 用户 getusername. 4. 然后 数据 => 预计 数据 toequal. '标记' ;
} ;

Agora Vamos Escrever UM Teste Para A Nossa Funcionaladade Async。

// __mocks __ / request.js
const 用户 = {
4. { 姓名 '标记' }
5. { 姓名 '保罗' }
} ;
出口 默认 功能 要求 URL. {
返回 新的 诺言 解决 拒绝 => {
const 用户身份 = 释放 URL. Substr. '/用户/' 长度 10. ;
过程 nexttick. =>
用户 [ 用户身份 ]
解决 用户 [ 用户身份 ]
拒绝 {
错误
'funciona com proMessas' => {
预计 断言 1 ;
返回 用户 getusername. 4. 然后 数据 => 预计 数据 toequal. '标记' ;
} ;

nóschamamos.jest.mock('../请求')Para Informar Jest Para Usar NossaSimulação手册。espera que o valor de Retorno seja uma proMessa que vai ser soldvida。你可以在你喜欢和呼唤时连锁着许多承诺预计只要你在最后回归承诺的任何时候。

.resolves.

存在uma maneira menos verbosa usando解决Para Decodificar o Valor de Uma Promessa Cumprida,Juntamente Com Quaisecure前进匹配机。SE一个ProMessa for Rejeitada,AfirmaçãoFalhará。

'funciona com解决' => {
预计 断言 1 ;
返回 预计 用户 getusername. 5. 解决 toequal. '保罗' ;
} ;

异步/等待

使用该测试异步/等待语法也是可能的。以下是您以前的方式编写相同的例子:

// async / await pode ser usado。
'funciona com异步/等待' 异步 => {
预计 断言 1 ;
const 数据 = 等待 用户 getusername. 4. ;
预计 数据 toequal. '标记' ;
} ;
// async / awaittambémpode ser usado com` .resolves`。
'funciona com async / await e解决' 异步 => {
预计 断言 1 ;
等待 预计 用户 getusername. 5. 解决 toequal. '保罗' ;
} ;

要在项目中启用异步/等待,请安装@ Babel / Preset-Env并启用您的功能babel.config.js.文件。

Tratamento de Erros.

erros podem ser tratatados usando ométodo。抓住。SE认证de adicionar期待Para Verificar Que UM CertoNúmerodeFirmaçõesSãoChamadas。CasoContrário,Uma Promessa CumpridaNãoFalharia没有考试:

// testando para erros async usando promise.catch。
'用promises测试错误' => {
预计 断言 1 ;
返回 用户 getusername. 2 抓住 E. =>
预计 E. toequal. {
错误 '没有找到2的用户。
}
;
} ;
//或使用异步/等待。
'testa erro com异步/等待' 异步 => {
预计 断言 1 ;
尝试 {
等待 用户 getusername. 1 ;
} 抓住 E. {
预计 E. toequal. {
错误 '未找到1的用户。
} ;
}
} ;

。重点

。重点亚搏取款帮手像.resolves.亚搏取款帮手。SE aproMessaécumprida,O teste自动名称伊拉胡士哈尔。期待.Assertions(数字)不是必需的,但建议验证一定数量的数量断言在测试期间被调用。否则忘了返回/等待.resolves.断言。

// testando para erros async usando`。重点`。
'testa erro com拒绝' => {
预计 断言 1 ;
返回 预计 用户 getusername. 3. 拒绝 toequal. {
错误 '没有找到3的用户。'
} ;
} ;
// ou usando async / await com`。重点`。
'testa erro com异步/等待电子拒绝' 异步 => {
预计 断言 1 ;
等待 预计 用户 getusername. 3. 拒绝 toequal. {
错误 '没有找到3的用户。'
} ;
} ;

此示例的代码可用例子/异步

如果您想测试计时器,就像索取,看看计时器模拟文档。