jasmine-skill について
jasmine-skillは、Jasmineを使うJavaScript開発者向けのテスト資料です。基本パターンに加え、セットアップ、モック、ブラウザテスト、CI/CD、デバッグのガイドを収録しています。
主な機能
- 01基本テストとマッチャー
- 02スパイと非同期テスト
- 03初期化・実行コマンド
- 04応用パターンのプレイブック
- 05ブラウザテストとCI/CDガイド
活用シーン
- 01JavaScriptコードのJasmineテスト作成
- 02非同期関数やスパイのテスト
- 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 スパイ — 完全な API | spyOn、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 項目) |
コメント
Markdown 対応