Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jest测试中放置公共数据_Javascript_Unit Testing_Jestjs - Fatal编程技术网

Javascript 如何在jest测试中放置公共数据

Javascript 如何在jest测试中放置公共数据,javascript,unit-testing,jestjs,Javascript,Unit Testing,Jestjs,我不知道如何组织用于jest测试的代码 我的所有测试都在\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu下,我的所有模拟都在\uuuuuuuuuuuu下。现在,我有一些数据要在测试之间共享:它们不是现有函数的模拟,它们只是我希望在不同文件中使用的一些javascript对象 我应该创建一个\uuuuuuuuuuuuuuuu目录吗 还是把它们放在\uuuuu mock\uuuu下 或者在\uuuu tests\uuuu目录中,而不将-test放在文件名中?简短的答案在您想要的任何

我不知道如何组织用于jest测试的代码

我的所有测试都在
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
下,我的所有模拟都在
\uuuuuuuuuuuu
下。现在,我有一些数据要在测试之间共享:它们不是现有函数的模拟,它们只是我希望在不同文件中使用的一些javascript对象

我应该创建一个
\uuuuuuuuuuuuuuuu
目录吗

还是把它们放在
\uuuuu mock\uuuu


或者在
\uuuu tests\uuuu
目录中,而不将
-test
放在文件名中?

简短的答案在您想要的任何地方

JavaScript在它的生命中经历了很多不同的阶段,有很多不同类型的人在使用它。这可能就是为什么现在大多数工具都是高度可配置的,以允许个性化(定制)

甚至玩笑本身也显示出这些迹象。例如,测试匹配器将在
\uuu tests\uuu
文件夹或包含
.spec
.test
的文件中查找测试

或者按照他们的文档以可视化的方式:

├── __tests__
│   └── component.spec.js # test
│   └── anything # test
├── package.json # not test
├── foo.test.js # test
├── bar.spec.jsx # test
└── component.js # not test
关于夹具和其他测试文件,答案是一样的,没有一种方法可以做到这一点

选择适合你的

我建议对
\uuuu tests\uuuu
结构将夹具数据放置在使用它的测试附近,如果需要访问多个测试,则将其进一步向上移动到项目中,直到其位于公共位置


我的首选是一个
tests
文件夹,将测试、夹具和测试与
src
代码分开。

我基本上同意@Alex

但通常情况下,我宁愿将某个特定情况的真实API模拟数据保存在测试文件本身中,而不是总是将数据移动到不同的文件中

我将它们视为React组件的
PropType
部分,将它们保留在测试文件的按钮上(
\uuuu test\uuuuu
\uuu spec\uuu
*test.js
*.spec.js
),但在文件中,除非我必须共享

下面是一个使用axios的超级简单示例:

src/\uuuuu mocks\uuuuu/axios.js

导出默认值{
get:jest.fn(()=>Promise.resolve({data:[]})),
};
然后axios被模拟,因为现在如果我们想测试一个超级简单的包装器API实用程序,比如:

从“Axios”导入Axios;
export const yourMethod=async()=>{
返回新承诺(解决=>{
get(`yourAPIEndPoint`)
。然后(结果=>{
解析([…result.data]);
})
.catch(e=>{
console.error('应处理错误',e);
});
});
};
对我来说,一个测试只能是:

从“Axios”导入Axios;
从“/borrame”导入{yourMethod};
描述('YourMethodTestCase',()=>{
它('它返回您期望的数据',异步()=>{
//此测试用例的特定响应。
Axios.get.mockImplementationOnce(()=>
承诺,决心({
数据:yourMethodMockData,
})
);
const result=等待您的方法();
expect(result[0].id).toBe(yourMethodRawMockData[0].id);
});
});
/**
*特定测试数据
*/
常量yourMethodMockData=[
{
id:'12345',
名称:“12345的名称”,
},
];
即使如此,如果相同的模拟数据将在测试文件之外重用,我也会将该模拟数据移动到
\uuuuu test\uuuu
文件夹内的不同
.js
,并将其导出以重用

当我必须基于API调用参数“生成”
.json
数据时,我甚至创建了
mockAPIGenerators
,但对我来说,遵循的一般规则是


因此,在同一个测试文件中,按钮是一个常量,除非在我使用的其他测试框架中它还不够,否则fixture一词用于指代测试数据。