Lezing 1: Behavior driven development
Vandaag (maandag) zijn er grote tutorial sessies. Ikzelf heb deze voormiddag naar Behavior Driven Design geweest, waarin het werken met RSpec en StoryTeller werd uitgelegd, in combinatie met Mocks en Stubs.
Eerst was er een inleiding met een overzicht van enkele verschillende manieren waarop je kan samenwerken met de klant om de juiste specs te verkrijgen. Enkele eenvoudige voorstellen zijn bvb het spreken van dezelfde taal (als de developer over “a” spreekt, dan is dat dezelfde “a” voor de client), het vastleggen van de specificaties door heel diep te discussieren met de klant,… Allemaal heel intressante zaken, waarvan we er enkele al kenden, en anderen niet of minder. Al bij al intressant.
Daarna kwam RSpec aan de beurt, de tool om technische specificaties eenvoudig uit te schrijven in een verhaalvorm, en wat zorgt voor een groot aantal tests die al uw code “covert”. Het is een manier om snel en eenvoudig de exacte werking van je applicatie uit te schrijven. Een voorbeeld maakt vermoedelijk veel duidelijk:
Story "Plan cup", %{
As a cup organizer
I want to declare how many teams are in the cup
So that I can lay out the chart
}, :type => RailsStory do
Scenario "set up a 4 team cup structure" do
Given "a new cup with max teams of", 4 do |max_teams|
end
When "I ask to see it" do
end
Then "It should a row count of", 3 do
end
Then "The round 1 row should have a column count of", 4 do
end
Then "The round 2 row should have a column count of", 2 do
end
Then "The winner row should have a column count of", 1 do
end
end
Scenario "set up an 8 team cup structure" do
Given "a new cup with max teams of", 8
When "I ask to see it"
Then "It should a row count of", 4
Then "The round 1 row should have a column count of", 8
Then "The round 2 row should have a column count of", 4
Then "The round 3 row should have a column count of", 2 do
end
Then "The winner row should have a column count of", 1
end
end
Het voorbeeld heeft de echte testcode nog niet aan boord, het zou het voorbeeld maar complexer maken. Eens je deze basis hebt ga je de echte tests toevoegen, en kan je via mocks en stubs de zaken opvullen die nog niet 100% gedefinieerd zijn.
Allemaal zeer intressant.