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

异步示例

首先,在JEST中启用BABEL支持入门指导。

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

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

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

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

// Request.js.
const http. = 要求 'http' ;
出口 默认 功能 要求 URL. {
返回 新的 诺言 解决 => {
//这是HTTP请求的示例,例如要获取
//来自API的用户数据。
//此模块正在__mocks __ / request.js映像
http. 得到 { 小路 URL. } 回复 => {
数据 = '' ;
回复 '数据' _数据 => 数据 + = _数据 ;
回复 '结尾' => 解决 数据 ;
} ;
} ;
}

因为我们不想在我们的测试中转到网络,所以我们将为我们的手册创建手动模拟Request.js.模块在__mocks__文件夹(文件夹区分大小写,__mocks__不管用)。它可以看起来像这样:

// __mocks __ / request.js
const 用户 = {
4. { 姓名 '标记' }
5. { 姓名 '保罗' }
} ;
出口 默认 功能 要求 URL. {
返回 新的 诺言 解决 拒绝 => {
const 用户身份 = 释放 URL. Substr. '/用户/' 长度 10. ;
过程 nexttick. =>
用户 [ 用户身份 ]
解决 用户 [ 用户身份 ]
拒绝 {
错误 '用户' + 用户身份 + ' 未找到。'
}
;
} ;
}

现在让我们为自己的异步功能写一下测试。

// __tests __ / user-test.js
笑话 嘲笑 '../要求' ;
进口 * 作为 用户 '../用户' ;
//必须返回承诺的断言。
'与承诺合作' => {
预计 断言 1 ;
返回 用户 getusername. 4. 然后 数据 => 预计 数据 toequal. '标记' ;
} ;

我们称之为jest.mock('../请求')告诉Jest使用我们的手动模拟。期望返回值是一个要解决的承诺。你可以在你喜欢和呼唤时连锁着许多承诺预计只要你在最后回归承诺的任何时候。

.resolves.

使用不太冗长的方式解决要与任何其他匹配者一起卸载满足承诺的价值。如果承诺被拒绝,则断言将失败。

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

异步/等待

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

//可以使用异步/等待。
'与异步/等待'合作' 异步 => {
预计 断言 1 ;
const 数据 = 等待 用户 getusername. 4. ;
预计 数据 toequal. '标记' ;
} ;
//异步/等待也可以与`.resolves`一起使用。
'与异步/等待和解决并解决' 异步 => {
预计 断言 1 ;
等待 预计 用户 getusername. 5. 解决 toequal. '保罗' ;
} ;

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

误差处理

可以使用错误处理错误。抓住方法。确保添加期待验证调用某个数量的断言。否则,履行的承诺不会失败测试:

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

。重点

。重点亚搏取款帮手像.resolves.亚搏取款帮手。如果履行承诺,则测试将自动失败。期待.Assertions(数字)不是必需的,但建议验证一定数量的数量断言在测试期间被调用。否则忘了返回/等待.resolves.断言。

//使用“。重点”测试异步错误。
'用拒绝测试错误' => {
预计 断言 1 ;
返回 预计 用户 getusername. 3. 拒绝 toequal. {
错误 '没有找到3的用户。'
} ;
} ;
//或使用async / await与`.lejects`。
'测试异步/等待和拒绝的错误 异步 => {
预计 断言 1 ;
等待 预计 用户 getusername. 3. 拒绝 toequal. {
错误 '没有找到3的用户。'
} ;
} ;

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

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

上次更新了经过Simen Bekkhus.