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