Since no one wants to write the documentation, the simplest solution would be to let everyone write documentation, without noticing…
Normal documentation:
An Organisation is a firm or school that has an address(required) and can have users as members.
Pragmatig documentation with examples:
Organisation: - requires an address organisation.address - can have users as members organisation.members << User
Test:
describe Organisation do
it "requires an address" do
@organisation.should_not be_valid?
@organisation.address = Address.new
@organisation.should be_valid
end
it "can have users as members" do
@organisation.should be_valid
@organisation.members << User.new
@organisation.should be_valid
end
end
#before :each omitted
With the help of some spec -f or agiledox magic, we can extract:
An Organisation: - requires an address - can have users as members
looks familliar ?
I prefer this kind of testing, since it does not generate so many 3-liners(2(do/end)+1) nor uses “it should” all the time, which makes it look more documentation-ish.
DISCLAIMER: This way of writing tests is not RSpec-pure in that it does not use ‘it should’ and has more than on assertion (should) per example.
One thought on “Tests should be Documentation with Examples”