David,

Thanks very much for the reply. I was aware I was dealing with a mock, but
I thought in this instance it would fool event_types into thinking it was a
genuine object to allow the association to be made and return EventType.

So what are my options? To add the data to the DB or to build the object
the long way round

@et = EventType.new(@avalid_attributes)
@et.event_category = event_category ## mock
@et.save!


While I have your ears, is it necessary to replicate the behaviour in the
model spec of how a controller builds an object? i.e use .build in the
controller and use .new in the spec. I mean, to me, it doesn't matter as
all I'm really concerned with is working with the object no matter how it's
built.

Great piece of software and book, by-the-way. Thanks very much for it.

-ants




On 4 December 2011 14:55, David Chelimsky <dchelim...@gmail.com> wrote:

>
> On Dec 4, 2011, at 7:48 AM, Ants Pants wrote:
>
> Hello everyone,
>
> I am trying to do the following ....
>
> before(:each) do
>     @valid_attributes = {:foo => 'bar'}
>
>     @event_type = event_category.event_types.build(@valid_attributes)
>     $stderr.puts "**** #{@event_type.class} *****"
> end
>
> let (:event_category) { mock_model(EventCategory).as_null_object }
>
> and the problem I'm having is that @event_type is coming back as
> EventCategory and not EventType.
>
> Because of this problem, I thought, eh, I didn't know Rails did that!  So
> I checked use of .build in the real code and it does return EventType.
>
> I'm obviously doing something stupidly wrong in the test but I just can't
> figure it out.
>
> Any pointers would be greatly appreciated, thank you.
>
>
> event_category is a mock_model, not an EventCategory. Since it's declared
> as_null_object, when it receives :event_types, it returns itself, and then
> does the same for :build. So it's not really even an EventCategory: it's a
> the same mock_model object, which is designed to lie about it's class in
> order to be able to work with form builders.
>
> HTH,
> David
>
> _______________________________________________
> rspec-users mailing list
> rspec-users@rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to