From droids
[DROIDS-INTERNAL] Testing patterns and best practices. Only activate when invoked by droids plugin agents (test-engineer) or /droids:* commands. Do NOT auto-activate in regular conversations.
npx claudepluginhub cheluen/droids-workflow --plugin droidsThis skill uses the workspace's default tool permissions.
Use these patterns when writing tests for code changes.
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Use these patterns when writing tests for code changes.
describe('Feature', () => {
it('should do something specific', () => {
// Arrange - Set up test data and conditions
const input = createTestInput();
// Act - Execute the code under test
const result = functionUnderTest(input);
// Assert - Verify the expected outcome
expect(result).toBe(expectedValue);
});
});
[Unit/Feature] should [expected behavior] when [condition]
Examples:
UserService should throw error when email is invalidLoginForm should display error message when credentials are wrongAPI should return 401 when token is expired| Type | Minimum Coverage |
|---|---|
| Unit Tests | 80% line coverage |
| Integration Tests | Critical paths covered |
| E2E Tests | Main user journeys |
it('should handle async operations', async () => {
const result = await asyncFunction();
expect(result).toBeDefined();
});
it('should throw on invalid input', () => {
expect(() => functionUnderTest(null)).toThrow('Invalid input');
});
it('should return user data', async () => {
const response = await request(app)
.get('/api/users/1')
.expect(200);
expect(response.body).toHaveProperty('id', 1);
});
jest.mock('./database');
const mockDb = require('./database');
mockDb.query.mockResolvedValue([{ id: 1 }]);
import { render, screen, fireEvent } from '@testing-library/react';
test('submits form with user data', async () => {
render(<LoginForm />);
fireEvent.change(screen.getByLabelText('Email'), {
target: { value: 'test@example.com' }
});
fireEvent.click(screen.getByRole('button', { name: 'Submit' }));
await screen.findByText('Success');
});
import pytest
def test_function_returns_expected():
result = my_function(input_data)
assert result == expected_output
@pytest.mark.parametrize("input,expected", [
(1, 2),
(2, 4),
(3, 6),
])
def test_multiply_by_two(input, expected):
assert multiply_by_two(input) == expected