Harjoitus 29: TDD Claude-työskentely¶
Tavoite
Oppia TDD-mallia (Test-Driven Development) Claude-agentin kanssa: failing test → toteutus → testien ajo.
Taustaa¶
Klassisessa TDD:ssä:
- Red: Kirjoita epäonnistuva testi
- Green: Toteuta toiminnallisuus
- Refactor: Tiivistä koodi
Claudelle tämä on erityisen voimallista — se voi kirjoittaa testin, toteuttaa sen ja varmistaa sen toimivan samassa istunnossa.
Tehtävä¶
Toteuta suurinomuista failing test + implement -putki:
- Kirjoita epäonnistuva testi toiminnallisuudelle
calculateTax(amount, rate) - Toteuta toiminnallisuus
- Aja testit → kaikki täytyy olla vihreinä
Ratkaisu¶
Vaihe 1: Kysy Claudelta testi + toteutus¶
claude "TDD-tyyppisesti:
1. Kirjoita failing test calculateTax-funktiolle (src/utils/tax.js)
2. Toteuta funktio
3. Aja testit ja varmista, että kaikki läpäiserro"
Vaihe 2: Claude tekee testin¶
// tests/utils/tax.test.js
const { calculateTax } = require('../../src/utils/tax');
describe('calculateTax', () => {
test('Laskisi 24 % ALV: 100 => 24', () => {
expect(calculateTax(100, 0.24)).toBe(24);
});
test('Nollaaa arvo => nolla', () => {
expect(calculateTax(0, 0.24)).toBe(0);
});
test('Negatiivisena arvon => heitä virhe', () => {
expect(() => calculateTax(-10, 0.24)).toThrow('Amount must be positive');
});
});
Vaihe 3: Claude toteuttaa toiminnallisuuden¶
// src/utils/tax.js
function calculateTax(amount, rate) {
if (amount < 0) throw new Error('Amount must be positive');
return Math.round(amount * rate * 100) / 100;
}
module.exports = { calculateTax };
Vaihe 4: Aja testit¶
$ npx jest tests/utils/tax.test.js
PASS tests/utils/tax.test.js
calculateTax
✓ Laske 24% ALV: 100 => 24 (1ms)
✓ Nollaa arvo => nolla
✓ Negatiivinen arvo => heitä virhe
Test Suites: 1 passed, 1 total
Tests: 3 passed, 3 total
Miksi tämä on tehokasta?¶
| Vaihe | Claude tekee | Hyöty |
|---|---|---|
| 1. Testi | Kirjoittaa failing testin | Määrittelee odotukset selvästi |
| 2. Toteutus | Toteuttaa toiminnallisuuden | Täsmällisesti vastaukseen testiin |
| 3. Testaus | Aja ja tarkista | Varmistaa, että kaikki täsmää |
Tip
Käytä --allowedTools "Bash(jest*)" testausmoodin rajoittamiseen.
Lähde: Esimerkki 29 [S1]