[rspec-users] Varying test data

Kerry Buckley kerry at kerrybuckley.com
Fri Jan 11 05:33:29 EST 2008


This isn't specific to RSpec, but is hopefully on-topic for this list.

I like (especially when "ping pong pairing") to write a spec, then  
write the smallest amount of code I can to pass it (especially when  
"ping pong pairing"). Sometimes this means hard-coding a return value,  
which means another spec is needed to prove that the code is really  
behaving as it should. Trivial example:

----------
describe Adder do
   it "should add two numbers" do
     Adder.add(2, 2).should == 4
   end
end

class Adder
   def add a, b
     4
   end
end
----------
describe Adder do
   it "should add 2 and 2" do
     Adder.add(2, 2).should == 4
   end
   it "should add 3 and 4" do
     Adder.add(3, 4).should == 7
   end
end

class Adder
   def add a, b
     a + b
   end
end
----------

It doesn't seem right though to have all those duplicate specs. An  
alternative is to generate random test data, but I'm not really  
comfortable doing that because it means the tests aren't strictly  
repeatable. I guess this is more of a problem with classic state-based  
testing, but even using BDD you still have to test state at the leaf  
nodes.

Does anyone have an opinion about whether this is a problem, and  
whether there's a clean way of dealing with it?

Thanks,

Kerry


More information about the rspec-users mailing list