mcpField
J
jasmine-skill

jasmine-skill

github.com/lambdatest测试与质量384230 次安装2 周前更新
代码仓库

关于 jasmine-skill

jasmine-skill 为使用 Jasmine 的 JavaScript 开发者提供测试参考,涵盖常见测试模式,并附有设置、模拟、浏览器测试、CI/CD 与调试指南。

主要功能

  1. 01基础测试与匹配器
  2. 02间谍与异步测试
  3. 03初始化和运行命令
  4. 04进阶模式手册
  5. 05浏览器测试与 CI/CD 指南

适用场景

  1. 01为 JavaScript 代码编写 Jasmine 测试
  2. 02测试异步函数与间谍
  3. 03配置浏览器测试和 CI 工作流

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/lambdatest/agent-skills --skill jasmine-skill

安装后在 Claude Code 中输入/jasmine-skill确认已加载。

附带文件reference/advanced-patterns.mdreference/playbook.md

详细介绍

Jasmine 测试技能

核心模式

基本测试
describe('Calculator', () => {
  let calc;

  beforeEach(() => { calc = new Calculator(); });

  it('should add two numbers', () => {
    expect(calc.add(2, 3)).toBe(5);
  });

  it('should throw on divide by zero', () => {
    expect(() => calc.divide(10, 0)).toThrowError('Division by zero');
  });
});
匹配器
expect(value).toBe(exact);              // === strict
expect(value).toEqual(object);           // Deep equality
expect(value).toBeTruthy();
expect(value).toBeFalsy();
expect(value).toBeNull();
expect(value).toBeUndefined();
expect(value).toBeDefined();
expect(value).toBeNaN();
expect(value).toBeGreaterThan(3);
expect(value).toBeCloseTo(0.3, 5);
expect(str).toContain('sub');
expect(str).toMatch(/pattern/);
expect(arr).toContain(item);
expect(fn).toThrow();
expect(fn).toThrowError('message');

// Negation
expect(value).not.toBe(other);
Spy
describe('UserService', () => {
  let service, api;

  beforeEach(() => {
    api = jasmine.createSpyObj('api', ['get', 'post']);
    service = new UserService(api);
  });

  it('fetches user from API', async () => {
    api.get.and.returnValue(Promise.resolve({ name: 'Alice' }));
    const user = await service.getUser(1);
    expect(user.name).toBe('Alice');
    expect(api.get).toHaveBeenCalledWith('/users/1');
    expect(api.get).toHaveBeenCalledTimes(1);
  });
});

// Spy on existing method
spyOn(obj, 'method').and.returnValue(42);
spyOn(obj, 'method').and.callThrough();    // Call original
spyOn(obj, 'method').and.throwError('err');
异步测试
it('fetches data', async () => {
  const data = await fetchData();
  expect(data).toBeDefined();
});

// With done callback
it('fetches data', (done) => {
  fetchData().then(data => {
    expect(data).toBeDefined();
    done();
  });
});

// Clock control
beforeEach(() => { jasmine.clock().install(); });
afterEach(() => { jasmine.clock().uninstall(); });

it('handles timeout', () => {
  const callback = jasmine.createSpy();
  setTimeout(callback, 1000);
  jasmine.clock().tick(1001);
  expect(callback).toHaveBeenCalled();
});

设置:npm install jasmine --save-dev && npx jasmine init

运行:npx jasmine 或 npx jasmine spec/calculatorSpec.js

深入了解模式

生产级模式请参阅 reference/playbook.md:

章节内容
§1 项目设置jasmine.json、TypeScript、spec 报告器配置
§2 Spy — 完整 APIspyOn、createSpyObj、callFake、returnValues、调用跟踪
§3 异步测试async/await、expectAsync、Promise 匹配器
§4 自定义匹配器特定领域的匹配器、不对称匹配器
§5 测试组织嵌套 describe、共享状态、聚焦/排除测试
§6 Fetch 与模块模拟globalThis.fetch spy、HTTP 错误处理
§7 浏览器测试DOM 创建、键盘事件、使用 Karma 限制焦点
§8 CI/CD 集成使用覆盖率和浏览器测试的 GitHub Actions
§9 调试表12 个常见问题及其原因和解决方法
§10 最佳实践生产级 Jasmine 测试的 14 项检查清单

评论

支持 Markdown