Why is ruby returning `true` for method call?

Viewed 187

So this is a brief tutorial I found abouot Rspec: w3ii.com: rspec on it's explanation about rspec helpers. This is the code for the example:

class Dog
   attr_reader :good_dog, :has_been_walked

   def initialize(good_or_not)
      @good_dog = good_or_not
      @has_been_walked = false
   end

   def walk_dog
      @has_been_walked = true
   end
end

describe Dog do
   def create_and_walk_dog(good_or_bad)
      Dog.new(good_or_bad).walk_dog
   end

   it 'should be able to create and walk a good dog' do
      dog = create_and_walk_dog(true)

      expect(dog.good_dog).to be true
      expect(dog.has_been_walked).to be true
   end
end

When I run this, I get this error:

NoMethodError: undefined method 'good_dog' for true:TrueClass
# ./dor.rb:22:in 'block <2 levels> in >'

I can't understand how a call to Dog.new() returns a true:TrueClass object instead of a simple dog.

2 Answers
Related