test-generator

Generate comprehensive test suites with unit tests, integration tests, mocks, and edge case coverage.

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 "test-generator" with this command: npx skills add aidotnet/moyucode/aidotnet-moyucode-test-generator

Test Generator Skill

Description

Generate comprehensive test suites with unit tests, integration tests, mocks, and edge case coverage.

Trigger

  • /test command

  • User requests test generation

  • User needs test coverage

Prompt

You are a testing expert that creates comprehensive test suites.

Jest/Vitest Unit Tests (TypeScript)

import { describe, it, expect, vi, beforeEach } from 'vitest'; import { UserService } from './UserService'; import { UserRepository } from './UserRepository';

// Mock the repository vi.mock('./UserRepository');

describe('UserService', () => { let userService: UserService; let mockRepository: jest.Mocked<UserRepository>;

beforeEach(() => { mockRepository = new UserRepository() as jest.Mocked<UserRepository>; userService = new UserService(mockRepository); vi.clearAllMocks(); });

describe('createUser', () => { it('should create a user with valid data', async () => { // Arrange const userData = { email: 'test@example.com', name: 'Test User' }; const expectedUser = { id: '123', ...userData, createdAt: new Date() }; mockRepository.create.mockResolvedValue(expectedUser);

  // Act
  const result = await userService.createUser(userData);

  // Assert
  expect(result).toEqual(expectedUser);
  expect(mockRepository.create).toHaveBeenCalledWith(userData);
  expect(mockRepository.create).toHaveBeenCalledTimes(1);
});

it('should throw error for duplicate email', async () => {
  // Arrange
  const userData = { email: 'existing@example.com', name: 'Test' };
  mockRepository.create.mockRejectedValue(new Error('DUPLICATE_EMAIL'));

  // Act &#x26; Assert
  await expect(userService.createUser(userData))
    .rejects.toThrow('DUPLICATE_EMAIL');
});

it('should validate email format', async () => {
  // Arrange
  const invalidData = { email: 'invalid-email', name: 'Test' };

  // Act &#x26; Assert
  await expect(userService.createUser(invalidData))
    .rejects.toThrow('INVALID_EMAIL');
});

});

describe('getUserById', () => { it('should return user when found', async () => { const user = { id: '123', email: 'test@example.com', name: 'Test' }; mockRepository.findById.mockResolvedValue(user);

  const result = await userService.getUserById('123');

  expect(result).toEqual(user);
});

it('should return null when user not found', async () => {
  mockRepository.findById.mockResolvedValue(null);

  const result = await userService.getUserById('nonexistent');

  expect(result).toBeNull();
});

}); });

pytest (Python)

import pytest from unittest.mock import Mock, patch from user_service import UserService

class TestUserService: @pytest.fixture def mock_repository(self): return Mock()

@pytest.fixture
def user_service(self, mock_repository):
    return UserService(mock_repository)

def test_create_user_success(self, user_service, mock_repository):
    # Arrange
    user_data = {"email": "test@example.com", "name": "Test User"}
    expected = {"id": "123", **user_data}
    mock_repository.create.return_value = expected

    # Act
    result = user_service.create_user(user_data)

    # Assert
    assert result == expected
    mock_repository.create.assert_called_once_with(user_data)

def test_create_user_duplicate_email(self, user_service, mock_repository):
    mock_repository.create.side_effect = ValueError("DUPLICATE_EMAIL")

    with pytest.raises(ValueError, match="DUPLICATE_EMAIL"):
        user_service.create_user({"email": "existing@example.com"})

@pytest.mark.parametrize("invalid_email", [
    "invalid",
    "@example.com",
    "test@",
    "",
])
def test_validate_email_invalid(self, user_service, invalid_email):
    with pytest.raises(ValueError, match="INVALID_EMAIL"):
        user_service.create_user({"email": invalid_email, "name": "Test"})

xUnit (C#)

public class UserServiceTests { private readonly Mock<IUserRepository> _mockRepository; private readonly UserService _userService;

public UserServiceTests()
{
    _mockRepository = new Mock&#x3C;IUserRepository>();
    _userService = new UserService(_mockRepository.Object);
}

[Fact]
public async Task CreateUser_WithValidData_ReturnsUser()
{
    // Arrange
    var userData = new CreateUserDto { Email = "test@example.com", Name = "Test" };
    var expectedUser = new User { Id = Guid.NewGuid(), Email = userData.Email };
    _mockRepository.Setup(r => r.CreateAsync(It.IsAny&#x3C;User>()))
        .ReturnsAsync(expectedUser);

    // Act
    var result = await _userService.CreateUserAsync(userData);

    // Assert
    Assert.Equal(expectedUser.Email, result.Email);
    _mockRepository.Verify(r => r.CreateAsync(It.IsAny&#x3C;User>()), Times.Once);
}

[Theory]
[InlineData("")]
[InlineData("invalid")]
[InlineData("@example.com")]
public async Task CreateUser_WithInvalidEmail_ThrowsValidationException(string email)
{
    var userData = new CreateUserDto { Email = email, Name = "Test" };

    await Assert.ThrowsAsync&#x3C;ValidationException>(
        () => _userService.CreateUserAsync(userData));
}

}

Tags

testing , unit-tests , integration-tests , tdd , quality-assurance

Compatibility

  • Codex: ✅

  • Claude Code: ✅

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.

Coding

bilibili-analyzer

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

puppeteer

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

cron-scheduler

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

exceljs

No summary provided by upstream source.

Repository SourceNeeds Review