[rspec-users] Missing methods

James Deville james.deville at gmail.com
Fri Jan 11 16:40:51 EST 2008


On Jan 11, 2008, at 7:31 AM, Scott Taylor wrote:

>
> On Jan 10, 2008, at 8:27 PM, James Deville wrote:
>
>> We have a custom implementation of the Mother Object idea. It's  
>> inside
>> of a module, basically like this:
>>
>> module Factory
>> 	%w(account friendship person invitation message asset email_address
>> birth).each do |klass|
>> 		eval <<-EOF
>> 		def self.create_#{klass}(attributes = {})
>> 			default_attributes = valid_#{klass}_attributes
>> 			#{klass.camelize}.create! default_attributes.merge(attributes)
>> 		end
>> 		EOF
>> 	end
>>
>> 	def valid_message_attributes(options = {})
>> 		{
>> 		#some message options
>> 		}
>> 	end
>>
>> 	#more valid_x_attributes methods
>> end
>>
>> When I require this file in a spec file, Factory.create_person works
>> fine. When I try to do it in a step file, Factory.create_person is
>> defined, but it fails because valid_person_attributes is missing. If
>> I'm in a debugger, and I do require 'model_factory' followed by
>> Factory.create_person, same deal.
>>
>> Do we have a blank slate being loaded somewhere, and why is it wiping
>> out require files?
>
> Actually, though, I think John D. Hume is right (and this is a
> current bug with FixtureReplacement, as well): your valid_* methods
> are not class methods, but instance methods.
>
> I bet the reason that it has worked in the past is because rspec does
> funny things with Module#include, and without having the time to look
> at the source, I'd bet that rspec ends up delegating to the class
> level (but story runner doesn't) - giving you the appearance that
> your software works, but in fact is just taking advantage of rspec's
> implementation.
>
> Prove me wrong, if you can.
>
> Best,
>
> Scott
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
I'll probably just try to prove you right

James Deville
http://devillecompanies.org
james.deville at gmail.com
rspec r3172
rspec_on_rails r3172
rails r8331






More information about the rspec-users mailing list