rpa*_*ani 13 javascript unit-testing jestjs
我不确定如何组织开玩笑测试的代码.
我有我所有的测试__tests__和我的所有模拟__mocks__.现在我想要在测试之间共享一些数据:它们不是现有函数的模拟,它们只是我想在不同文件中使用的一些javascript对象.
我应该创建一个__data__目录吗?
还是把它们放在一边__mocks__?
或者在__tests__没有放入-test文件名的目录中?
Ale*_*lex 10
简短的回答是您想要的任何地方。
JavaScript 在其生命周期中经历了许多不同的阶段,并且有许多不同类型的人在使用它。这可能就是为什么现在大多数工具都是高度可配置的,以允许个性化(定制)。
甚至 Jest 本身也显示出这些迹象。例如测试匹配将查找在任一测试__tests__文件夹或与被包含的文件.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
Run Code Online (Sandbox Code Playgroud)
对于夹具和其他测试文件,答案是相同的,没有一种方法可以做到。
选择对你有用的东西。
我建议__tests__将夹具数据放置在靠近使用它的测试的结构中,如果多个测试需要访问,则将其进一步移动到项目中,直到它位于公共位置。
我的偏好是一个tests文件夹,用于将测试、固定装置和测试与src代码分开。
我基本同意@Alex 的观点。
但通常情况下,我更喜欢在测试文件本身中保留特定情况的真实 API 模拟数据,而不是总是将数据移动到不同的文件。
我将它们视为PropTypeReact Components 的部分,将它们保留在测试文件的按钮处(__test__、__spec__或*test.js)*.spec.js,但位于文件内部,除非我必须共享。
这是 axios 的一个超级简单的例子:
src/__mocks__/axios.js
export default {
get: jest.fn(() => Promise.resolve({ data: [] })),
};
Run Code Online (Sandbox Code Playgroud)
然后 axios 被嘲笑,因为现在如果我们想测试一个超级简单的包装 API 实用程序,例如:
import Axios from 'axios';
export const yourMethod = async () => {
return new Promise(resolve => {
Axios.get(`yourAPIEndPoint`)
.then(result => {
resolve([...result.data]);
})
.catch(e => {
console.error('should treat the error', e);
});
});
};
Run Code Online (Sandbox Code Playgroud)
对我来说,唯一的测试只能是:
import Axios from 'axios';
import { yourMethod } from './borrame';
describe('yourMethod TestCase', () => {
it('it returns the data you expect', async () => {
// Specific response for this test case.
Axios.get.mockImplementationOnce(() =>
Promise.resolve({
data: yourMethodMockData,
})
);
const result = await yourMethod();
expect(result[0].id).toBe(yourMethodRawMockData[0].id);
});
});
/**
* Specific Test Data
*/
const yourMethodMockData = [
{
id: '12345',
name: 'Name for 12345',
},
];
Run Code Online (Sandbox Code Playgroud)
尽管如此,如果要在测试文件之外重用相同的模拟数据,我会将此模拟数据移动到文件夹.js内的不同位置__test__并将其导出以供重用。
mockAPIGenerators当我必须根据 API 调用参数“生成”数据时,我什至已经创建了.json,但对我来说,要遵循的一般规则始终是KIS
因此,将按钮作为同一测试文件中的常量,除非它对您来说还不够。
| 归档时间: |
|
| 查看次数: |
1192 次 |
| 最近记录: |