Hello,
Is there any way to test model inheritance in spec?
something like…
it { ChildModel.should < ParentModel }
thanks.
Hello,
Is there any way to test model inheritance in spec?
something like…
it { ChildModel.should < ParentModel }
thanks.
On Tue, Sep 6, 2011 at 9:40 PM, slavix [email protected] wrote:
specify { ChildModel.should be < ParentModel }
On 7 Sep 2011, at 07:53, Sidu P. 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, Search (with Aslak
Hellesy)
Founder, http://relishapp.com
+44(0)7974430184 | http://twitter.com/mattwynne
On Sep 7, 2011, at 7:03 AM, Matt W. 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
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs