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. 01JavaScriptコードの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);
スパイ
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 スパイ — 完全な APIspyOn、createSpyObj、callFake、returnValues、呼び出しの追跡
§3 非同期テストasync/await、expectAsync、Promise マッチャー
§4 カスタムマッチャードメイン固有のマッチャー、非対称マッチャー
§5 テストの構成ネストした describe、共有状態、フォーカス/除外
§6 Fetch とモジュールのモックglobalThis.fetch のスパイ、HTTP エラー処理
§7 ブラウザーテストDOM の作成、キーボードイベント、Karma を使ったフォーカストラップ
§8 CI/CD の統合カバレッジとブラウザーテストを含む GitHub Actions
§9 デバッグ表よくある問題 12 件とその原因、解決方法
§10 ベストプラクティス本番環境での Jasmine テスト向けチェックリスト(14 項目)

コメント