jasmine-skill

Generates Jasmine tests in JavaScript. BDD-style framework with spies and async support. Use when user mentions "Jasmine", "jasmine.createSpy", "toHaveBeenCalled". Triggers on: "Jasmine", "jasmine test", "createSpy", "Jasmine spec".

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "jasmine-skill" with this command: npx skills add lambdatest/agent-skills/lambdatest-agent-skills-jasmine-skill

Jasmine Testing Skill

Core Patterns

Basic Test

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');
  });
});

Matchers

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);

Spies

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');

Async Testing

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();
});

Setup: npm install jasmine --save-dev && npx jasmine init

Run: npx jasmine or npx jasmine spec/calculatorSpec.js

Deep Patterns

See reference/playbook.md for production-grade patterns:

SectionWhat You Get
§1 Project Setupjasmine.json, TypeScript, spec reporter config
§2 Spies — Complete APIspyOn, createSpyObj, callFake, returnValues, call tracking
§3 Async Testingasync/await, expectAsync, promise matchers
§4 Custom MatchersDomain-specific matchers, asymmetric matchers
§5 Test OrganizationNested describe, shared state, focused/excluded
§6 Fetch & Module MockingglobalThis.fetch spy, HTTP error handling
§7 Browser TestingDOM creation, keyboard events, focus trapping with Karma
§8 CI/CD IntegrationGitHub Actions with coverage, browser testing
§9 Debugging Table12 common problems with causes and fixes
§10 Best Practices14-item checklist for production Jasmine testing

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

appium-skill

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

playwright-skill

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

selenium-skill

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

serenity-bdd-skill

No summary provided by upstream source.

Repository SourceNeeds Review