On 15 Nov 2011, at 04:04, David Chelimsky wrote:

> On Nov 8, 2011, at 12:52 AM, Romain Tribes wrote:
> 
>> Hello,
>> 
>> I'm writing a Risk-like webgame 
>> (https://github.com/Sephi-Chan/Conquest-on-Rails) and I want to add tests, 
>> but it's painful since objects have a lot of dependencies each other.
>> 
>> For instance, I have moved the attack logic in a dedicated class 
>> (https://github.com/Sephi-Chan/Conquest-on-Rails/blob/develop/app/models/attack.rb)
>>  and I would like to test it.
>> 
>> The problem is that to test an attack, I need to have at least two 
>> ownerships (the relation between a territory and a participation). And to 
>> have two ownerships, I need to have many participations (the relation 
>> between a player and a game), and for that I need players.
>> 
>> It's a lot of setup for a quite simple test.
> 
> If it requires a lot of set up it is inherently complex. Even though the 
> premise of the test might feel simple to you, the fact that you have to 
> negotiate your way through a web of dependencies means that when something 
> fails, you'll have a longer trail to hike to find the cause. It also means 
> your code is going to be hard to change. Loose coupling is one hallmark of 
> good, flexible software. Tests that require a lot of setup expose a tightly 
> coupled design.

+1

I'd recommend this book too:
http://www.amazon.co.uk/Working-Effectively-Legacy-Robert-Martin/dp/0131177052

> 
>> So, what should I do?
> 
> Is this a pet project for you, or something for work? If it's the former, 
> something you're using as a learning/practice vehicle, I'd recommend starting 
> over test first, and any time you find that the test is starting to require 
> complex set up, stop and rethink the design.
> 
>> Should I write a big setup for my suite? Or can I write a "sub-suites" with 
>> this big setup?
> 
> You can always extract big setup to some helper methods that set things up 
> for you. All of us do this more than we'd like to admit. But it always ends 
> up biting  you in the end. 
> 
> HTH,
> David
> 
> _______________________________________________
> rspec-users mailing list
> rspec-users@rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users

cheers,
Matt

--
Freelance programmer & coach
Author, http://pragprog.com/book/hwcuc/the-cucumber-book (with Aslak Hellesøy)
Founder, http://relishapp.com
+44(0)7974430184 | http://twitter.com/mattwynne

_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to