Skip to content

Instantly share code, notes, and snippets.

@nistude
Created November 27, 2011 18:44
Show Gist options
  • Save nistude/1397967 to your computer and use it in GitHub Desktop.
Save nistude/1397967 to your computer and use it in GitHub Desktop.
double('Foo') vs. Demeter's Law
# in Rails
class BarCollection
def initialize
@bars = [Bar.new, Bar.new]
end
def get_bars
@bars
end
end
class Foo
def do_something
bars = BarCollection.new.get_bars
bars.each do |bar|
bar.something
end
end
end
-----
require 'foo'
require 'bar_collection'
describe Foo do
it 'does something' do
bars = doube(BarCollection)
bars.should_receive(:get_bars).and_return([double('Bar').as_null_object])
foo = Foo.new
foo.do_something
end
end
@dchelimsky
Copy link

That's actually a very interesting point, however. I think a blog post is in order!

@nistude
Copy link
Author

nistude commented Dec 2, 2011

just wrote up my learnings of the last couple of days: http://blog.nistu.de/2011/12/02/an-epiphany-in-test-driven-development/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment