javascript - 我如何用 jest 测试异步获取功能
问题描述
谁能告诉我如何用 jest 测试这个功能
export function handleSubmitTest() {
const postData = async ( url = '', data = {})=>{
const response = await fetch(url, {
method: 'POST',
credentials: 'same-origin',
headers: {
'Content-Type': 'application/json',
},
// Body data type must match "Content-Type" header
body: JSON.stringify(data),
});
try {
const newData = await response.json();
console.log(newData);
return newData;
}catch(error) {
console.log("error", error);
}
}
return postData('http://localhost:8081/analyze', {text: "Picard"});
}
这是我在测试文件中所做的,但是当我在命令行中运行测试时,它给了我错误,即未定义提取。
import { handleSubmitTest } from '../formHandler'
import 'regenerator-runtime/runtime';
test('55555', async () => {
const data = await handleSubmitTest()
expect(data).toBe({text: "Picard"});
});
解决方案
fetch
在window
范围上定义。JSDom,Jest 使用的 DOM 实现在范围内没有该属性。您需要创建运行测试所需的属性的模拟。
话虽这么说......如果你正在测试一个模拟,你真正测试的是什么?
即,您可能想要测试正在创建或使用此 JSON 的代码,而不是本机 javascript 功能。
推荐阅读
- mysql - Convert mySQL queries to Laravel
- python - 如何在 IDLE 中运行与 Python 安装位置不同的文件夹中的 .py 文件?
- salt-stack - 根据发行版本安装包
- java - 读取配置文件的最佳方式
- ios - 如何在iOS swift中的单个Apple帐户中处理多个用户非消耗性IAP
- javascript - chartjs混合类型显示想为某些栏设置显示无
- r - 如果在集合中找到数字,如何“加入”数据框?
- typescript - TypeScript:创建具有可写属性的子类
- php - 当 PHP 下拉列表中有多个同名选项时,如何仅显示一个选项?
- angular5 - 如何检测补丁值后,angular6中的表单数据是否已更改?