🚀 快速安装

复制以下命令并运行,立即安装此 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 原始英文文档,方便对照翻译。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。