协作头脑风暴
brainstorming
在实现前澄清需求、探索设计选择,并形成清晰的开发方向。
tdd-workflow【开发与工程】Test-Driven Development workflow enforcement with RED-GREEN-REFACTOR cycle. Use only when the user explicitly asks for test-first work or improved test coverage.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Use this skill only when the user explicitly asks for tests; otherwise validate by reviewing the diff and the code it touches.
A disciplined approach to development where tests drive design and implementation.
"Never write a line of code without a failing test."
Goal: Define the expected behavior BEFORE implementation.
Rules:
Example:
// RED: Test the behavior we want
describe("Calculator", () => {
it("should add two numbers", () => {
const calc = new Calculator();
expect(calc.add(2, 3)).toBe(5);
});
});
// Run: npm test
// Result: FAIL - Calculator is not defined
// This is RED ✓
Checklist:
Goal: Write the MINIMUM code to pass the test.
Rules:
Example:
// GREEN: Minimum implementation to pass
class Calculator {
add(a: number, b: number): number {
return a + b; // Simplest thing that works
}
}
// Run: npm test
// Result: PASS
// This is GREEN ✓
Checklist:
Goal: Clean up while keeping tests green.
Rules:
Examples of refactoring:
Checklist:
1. Write high-level acceptance test (may not run yet)
2. Write first unit test (RED)
3. Implement minimum code (GREEN)
4. Refactor if needed (REFACTOR)
5. Repeat 2-4 until feature complete
6. Verify acceptance test passes
it("should [behavior] when [condition]", () => {
// Arrange - Set up test data and dependencies
const user = createTestUser({ role: "admin" });
const service = new UserService();
// Act - Execute the code under test
const result = service.getPermissions(user);
// Assert - Verify expected outcomes
expect(result).toContain("delete");
expect(result).toContain("edit");
});
[Unit]_[Scenario]_[ExpectedResult]
Examples:
add_withPositiveNumbers_returnsSumlogin_withInvalidPassword_throwsAuthErrorgetUser_whenNotFound_returnsNullAlways test:
| Metric | Minimum | Target |
|---|---|---|
| Statements | 70% | 85% |
| Branches | 70% | 80% |
| Functions | 80% | 90% |
| Lines | 70% | 85% |
Coverage is a metric, not a goal. 100% coverage doesn't mean bug-free.
RED → Write failing test (define behavior)
GREEN → Minimum code to pass (make it work)
REFACTOR → Clean up (make it right)
COMMIT → Save progress (make it permanent)
| Mistake | Problem | Solution |
|---|---|---|
| Testing implementation | Brittle tests | Test behavior/outcomes |
| Tests too large | Hard to debug | Smaller, focused tests |
| Shared state | Flaky tests | Isolate each test |
| Slow tests | Skipped tests | Mock external deps |
| Testing obvious code | Wasted time | Focus on logic |