🚀 快速安装
复制以下命令并运行,立即安装此 Skill:
npx @anthropic-ai/skills install github/awesome-copilot/javascript-typescript-jest
💡 提示:需要 Node.js 和 NPM
测试结构
- 使用
.test.ts或.test.js后缀命名测试文件 - 将测试文件放在被测试代码的旁边,或放在专用的
__tests__目录中 - 使用描述性的测试名称来解释预期的行为
- 使用嵌套的 describe 块来组织相关的测试
- 遵循模式:
describe('组件/函数/类', () => { it('应该执行某个操作', () => {}) })
有效的模拟
- 模拟外部依赖项(API、数据库等)以隔离您的测试
- 对模块级别的模拟使用
jest.mock() - 对特定函数的模拟使用
jest.spyOn() - 使用
mockImplementation()或mockReturnValue()来定义模拟行为 - 在
afterEach中使用jest.resetAllMocks()重置测试之间的模拟
测试异步代码
- 在测试中始终返回 Promise 或使用 async/await 语法
- 对 Promise 使用
resolves/rejects匹配器 - 对慢速测试使用
jest.setTimeout()设置适当的超时时间
快照测试
- 对不常更改的 UI 组件或复杂对象使用快照测试
- 保持快照小而精
- 在提交前仔细审查快照的更改
测试 React 组件
- 使用 React Testing Library 而不是 Enzyme 来测试组件
- 测试用户行为和组件可访问性
- 通过可访问角色、标签或文本内容查询元素
- 使用
userEvent而不是fireEvent以获得更真实的用户交互
常见的 Jest 匹配器
- 基础:
expect(value).toBe(expected),expect(value).toEqual(expected) - 真值性:
expect(value).toBeTruthy(),expect(value).toBeFalsy() - 数字:
expect(value).toBeGreaterThan(3),expect(value).toBeLessThanOrEqual(3) - 字符串:
expect(value).toMatch(/pattern/),expect(value).toContain('substring') - 数组:
expect(array).toContain(item),expect(array).toHaveLength(3) - 对象:
expect(object).toHaveProperty('key', value) - 异常:
expect(fn).toThrow(),expect(fn).toThrow(Error) - 模拟函数:
expect(mockFn).toHaveBeenCalled(),expect(mockFn).toHaveBeenCalledWith(arg1, arg2)
📄 原始文档
完整文档(英文):
https://skills.sh/github/awesome-copilot/javascript-typescript-jest
💡 提示:点击上方链接查看 skills.sh 原始英文文档,方便对照翻译。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)