[Pdx-pm] interesting testing hole thats been dug

Wil Cooley wcooley at nakedape.cc
Wed Jan 3 20:32:42 PST 2007


On Tue, 2007-01-02 at 16:36 -0800, benh wrote:
> A co-worker and I are wondering how/what the best way around this is?
> 
> we have a module that cans up all our DB connections... but when I
> want to test it should be a mocDB object... so we now have a DBTest
> that builds out the mocDB stuffies. But the issue now is that to get
> all the existing scripts to use DBTest for our tests.
> 
> Is there a clean way to intercept DB calls? is there some kinda bubble
> that we can toss the scripts in to and then any call out gets
> redirected? Our inital though was to just set an env var and then when
> the script would run then it would pick the right object, but that
> requires selecting a use statement (ie if($ENV{test}){use DBTest; }
> else {use DBHost;} ) alas that doesn't work.... any other ideas?

It may not be the best or right way to do it, but I just put in a
backdoor in my constructor to allow me to pass in an object of the
expected type (and documented it as an unsupported, test-only sort of
feature).  The module in question is basically a facade around Net::FTP:

http://search.cpan.org/src/WILCO/Net-FTP-Simple-0.0006/lib/Net/FTP/Simple.pm

(My constructor is private and called "_new()".)

Then I create Test::MockObject objects for my tests:

http://search.cpan.org/src/WILCO/Net-FTP-Simple-0.0006/t/10-Net-FTP-Simple.t

Wil
-- 
Wil Cooley <wcooley at nakedape.cc>
http://nakedape.cc/wiki/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://mail.pm.org/pipermail/pdx-pm-list/attachments/20070103/4b9ed0b1/attachment.bin 


More information about the Pdx-pm-list mailing list