![]() |
Redefining inheritance?
Suppose I have this:
class A class B < A Now, in my unit tests, I create a mock object to use for testing purposes: class MockA < A What I need now is a MockB, which inherits from MockA class MockB < MockA But I still need all of the methods which I have previous defined inside of B. Note that MockB doesn't have any relation to the actual B, unless I go back and redefine all of these methods within MockB itself. So, is there a way I can create a "MockB < B", but dynamically make "B inherit from MockA instead of the real A" |
Re: Redefining inheritance?
Caleb Tennis wrote:
> Suppose I have this: > > class A > class B < A > > Now, in my unit tests, I create a mock object to use for testing purposes: > > class MockA < A > > What I need now is a MockB, which inherits from MockA > > class MockB < MockA > > But I still need all of the methods which I have previous defined inside > of B. Note that MockB doesn't have any relation to the actual B, unless I > go back and redefine all of these methods within MockB itself. > > So, is there a way I can create a "MockB < B", but dynamically make "B > inherit from MockA instead of the real A" Do your mock classes define their own tests? If not, I'm not sure why you'd need MockB to extend MockA, and certainly not B to extend MockA. Make MockB extend B, which in turn extends A. If you really /must/ have MockB extend MockA, you could wrap an instance of the latter inside the former. |
Re: Redefining inheritance?
"jason r tibbetts" <tibbettj@verdi.iisd.sra.com> schrieb im Newsbeitrag news:427BB35D.9050906@verdi.iisd.sra.com... > Caleb Tennis wrote: >> Suppose I have this: >> >> class A >> class B < A >> >> Now, in my unit tests, I create a mock object to use for testing >> purposes: >> >> class MockA < A >> >> What I need now is a MockB, which inherits from MockA >> >> class MockB < MockA >> >> But I still need all of the methods which I have previous defined inside >> of B. Note that MockB doesn't have any relation to the actual B, unless >> I >> go back and redefine all of these methods within MockB itself. >> >> So, is there a way I can create a "MockB < B", but dynamically make "B >> inherit from MockA instead of the real A" > > Do your mock classes define their own tests? If not, I'm not sure why > you'd need MockB to extend MockA, and certainly not B to extend MockA. > Make MockB extend B, which in turn extends A. If you really /must/ have > MockB extend MockA, you could wrap an instance of the latter inside the > former. .... or use modules instead. Hint: you can create instances with #alloc avoiding standard initialization. module MockA end module MockB include MockA end tester = B.alloc tester.extend MockB .... Kind regards robert |
Re: Redefining inheritance?
> Do your mock classes define their own tests? If not, I'm not sure why > you'd need MockB to extend MockA, and certainly not B to extend MockA. > Make MockB extend B, which in turn extends A. If you really /must/ have > MockB extend MockA, you could wrap an instance of the latter inside the > former. A defines some methods which need to be overwritten during tests, which is why I have a MockA. B needs the same set of methods overwritten during its unit tests, so I end up needing a MockB which needs to grab the same overrides that were in A. I ended up just redefining the methods directly in A (thus, now no MockA is ever created) within the unit test file and did some aliasing to make it work. Thanks for the reply, though. |
| All times are GMT. The time now is 06:36 AM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.