thor has asked for the wisdom of the Perl Monks concerning the following question:
As I alluded to here, I have a set of modules that I'm writing, one of which I need to alter the default behavior of one of the modules due to lack of a database in the testing environment. I've tried using Test::MockObject and Test::MockModule, but to no avail. It seems that what I want to do is globaly replace one module with another, so that when something tries to use it and get objects from it, objects from the mocked module are returned instead. Is this at all possible? I'd be a lot happier if it were... Also, let me know if I need to be clearer in what I'm trying to do. If needed, I can come up with some pseudo-code that should demonstrate what I would like to happen.
thor
Feel the white light, the light within
Be your own disciple, fan the sparks of will
For all of us waiting, your kingdom will come
Then, in other code:package Foo; use DBI; sub get_db_value { # this sub requires database connectivity }
What I want to do is essentially replace get_db_value() with a subroutine that returns what I want it to return for testing conditions. That is to say, something like this:package Bar; use Foo; sub bar_func { my $value = Foo::get_db_value(); return $value * 42; }
use Bar; #something here to mock out Foo::get_db_value so that it returns a val +ue of "2" is(Bar::bar_func(), 84, "bar_func works as advertised");
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Testing procedure: how to mock?
by Ovid (Cardinal) on Sep 23, 2005 at 16:08 UTC | |
|
Re: Testing procedure: how to mock?
by dragonchild (Archbishop) on Sep 23, 2005 at 20:15 UTC | |
|
Re: Testing procedure: how to mock?
by xdg (Monsignor) on Sep 23, 2005 at 20:28 UTC | |
|
Re: Testing procedure: how to mock?
by stvn (Monsignor) on Sep 24, 2005 at 00:42 UTC | |
by thor (Priest) on Sep 26, 2005 at 20:43 UTC | |
by stvn (Monsignor) on Sep 27, 2005 at 07:11 UTC | |
|
How to mock?
by Anonymous Monk on Sep 23, 2005 at 20:34 UTC |