1. Useless, general words that bring no value:
# bad: what value? for what? it "adds certain value" # good it "snoozes for an extra 5 minutes" # bad: which result is correct? it "returns correct result" # good it "returns user's initials" # bad: how exactly it fails? it "fails" # good it "raises a not found error" # bad: formatted how? it "returns formatted string" # good it "returns time in 24-hour format" # bad: what 'ok' means? it "is ok" # good it "creates draft invoices"
2. Implementation details:
# bad it "changes @scheduled_on" # good it "reschedules campaign" # bad it "sets @todos" # good it "assigns todos to a given user"
it "returns time in 24-hour format" do expect(...).to eq "9:25" end it "strips leading zeroes" do expect(foo(" 9:25 ")).to eq "9:25" end
RSpec Style Guide
Top comments (2)
Would you be able to expand on what to write in these cases? RSpec is supposed to be very human-readable, so you make a lot of statements on what not to write. Could you explain why it's terrible to write #it statements like the exampled, and then explain what would be the better alternative and why? I like the idea of your post, just looking for the value you are trying to add. Seems like an angry tweet currently.
Sure, please have another look at the updated post:
I also added further reading: Better Specs and RSpec Style Guide.
What do you think?
Oh, I'm sorry. I didn't mean to make it angry or preachy. I'm not a native speaker, so I tried to make it short in order to avoid spelling and grammar mistakes :-)