Best practice: individual or combined tests?

Hi folks,

I’m pretty new to TDD. Is there a standard approach on this: Is it
better to write individual tests, or combine them? A specific example

  • if a model Foo validates the presence of both bar and baz, is it
    better to have a test each for bar and for baz, or to combine the
    validations into a combined bar/baz test?

Thanks!

acreadinglist wrote:

Hi folks,

I’m pretty new to TDD. Is there a standard approach on this: Is it
better to write individual tests, or combine them? A specific example

  • if a model Foo validates the presence of both bar and baz, is it
    better to have a test each for bar and for baz, or to combine the
    validations into a combined bar/baz test?

I’d test them individually. In general, you want each test pretty
atomic.

So for example, take a look at

(the validation specs start at line 217). I’ve got separate specs for
each validation.

That code could use some DRYing up, though, and I do sometimes do things
like

['one', 'two', 'three'].each do |field|
  it "should require #{field}" do
    @model.send "#{field}=", nil
    @model.should_not be_valid
  end
end

but note that this still produces three separate specs. I’d feel wrong
if it didn’t.

Thanks!

Best,

Marnen Laibow-Koser
http://www.marnen.org
[email protected]

Marnen Laibow-Koser wrote:

acreadinglist wrote:

Hi folks,

I’m pretty new to TDD. Is there a standard approach on this: Is it
better to write individual tests, or combine them? A specific example

  • if a model Foo validates the presence of both bar and baz, is it
    better to have a test each for bar and for baz, or to combine the
    validations into a combined bar/baz test?

I’d test them individually. In general, you want each test pretty
atomic.

So for example, take a look at
quorum2/spec/models/event_spec.rb at master · marnen/quorum2 · GitHub
(the validation specs start at line 217).

Trust Github to be smart about this! The direct URL for that line (!)
is

.

Best,

Marnen Laibow-Koser
http://www.marnen.org
[email protected]