Hello,
Is there any way to test model inheritance in spec?
something like..
it { ChildModel.should < ParentModel }
thanks.
on 2011-09-07 07:31
on 2011-09-07 07:42
On Tue, Sep 6, 2011 at 9:40 PM, slavix <mikerin.slava@gmail.com> wrote: > http://rubyforge.org/mailman/listinfo/rspec-users > specify { ChildModel.should be < ParentModel }
on 2011-09-07 14:48
On 7 Sep 2011, at 07:53, Sidu Ponnappa wrote: >>> it { ChildModel.should < ParentModel } >>> >>> thanks. > Wouldn't this be an implementation bound spec? +1 Test the behaviour, not the implementation. You could look at using a shared example group if you want to specify that the subclass shared behaviour with the superclass. -- Freelance programmer & coach Author, http://pragprog.com/book/hwcuc/the-cucumber-book (with Aslak Hellesy) Founder, http://relishapp.com +44(0)7974430184 | http://twitter.com/mattwynne
on 2011-09-07 16:01
On Sep 7, 2011, at 7:03 AM, Matt Wynne wrote: >>>> it { ChildModel.should < ParentModel } >>>> >>>> thanks. > >> Wouldn't this be an implementation bound spec? > > +1 > > Test the behaviour, not the implementation. You could look at using a shared example group if you want to specify that the subclass shared behaviour with the superclass. +1 It might not surprise you that I prefer to focus on behavior over implementation (though it might surprise some people who think I like to mock too much! ;)), however ... -1 ... there are absolutely valid cases for focusing on type. In rspec-rails, for example, mock_models need to lie about their type to Rails' internals in order for things to run smoothly. There are, therefore, examples like: mock_model("User").should be_a(User) Any sort of factory that might generate objects of different types in different contexts would warrant this as well. That said, I'll guess that @slavix's motivation here is that there are ParentModel specs and he doesn't want to duplicate them for ChildModel. If that's true, then a shared group is definitely a better option for a number of reasons. The most obvious one is that ChildModel is free to override behavior defined in ParentModel, so the fact that ChildModel < ParentModel is no guarantee that they behave the same way. HTH, David
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.