On Sep 7, 2011, at 7:03 AM, Matt Wynne wrote: > On 7 Sep 2011, at 07:53, Sidu Ponnappa wrote: > >> On 7 September 2011 11:09, Justin Ko <jko...@gmail.com> wrote: >>> >>> On Tue, Sep 6, 2011 at 9:40 PM, slavix <mikerin.sl...@gmail.com> wrote: >>>> >>>> Hello, >>>> Is there any way to test model inheritance in spec? >>>> >>>> something like.. >>>> 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 _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users