On 25/01/2009, at 9:56 PM, Stuart Hungerford wrote:
Hi,
I've got a set of classes in nested Ruby modules which I'm using
rspec to specify:
module Foo
module Baz
class C1 ... end
class C2 ... end
end
end
To specify C2 behaviour I need to create a bunch of C1 instances:
describe Foo::Baz::C2 do
before(:each) do
@c1a = Foo::Baz::C1.new(...)
@c1b = Foo::Baz::C1.new(...)
@c1c = Foo::Baz::C1.new(...)
@c2 = Foo::Baz::C2.new(@c1a, @c1b, @c1c)
end
describe "some behaviour" do
# ...
end
end
After a while the many Foo::Baz:: module prefixes become pretty
tedious and
not particularly DRY.
Can someone suggest a better way to manage using nested modules in
rspec?
Thanks,
Stu
--
Stuart Hungerford
ANU Supercomputer Facility
Hey Stuart. You should also consider using mocks and stubs. Eg:
module Foo
module Baz
before :each do
@c1a = mock_model C1, ...
@c1b = mock_model C1, ...
@c1c = mock_model C1, ...
@c2 = C2.new @c1a, @c1b, @c1c
end
end
end
That way, your specs for class C2 aren't tied to C1's implementation.
One other suggestion I'd make is to use more descriptive variable
names, though "c1a" might simply be for example's sake, since we're
talking about Foo::Baz::C1, etc.
Cheers,
Nick
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users