Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?

Re^2: When test-driven development just won't do

by Ovid (Cardinal)
on Aug 04, 2005 at 18:54 UTC ( #480984=note: print w/ replies, xml ) Need Help??

in reply to Re: When test-driven development just won't do
in thread When test-driven development just won't do

xdg wrote:

no strict 'refs'; ok( defined *{$CLASS."::".$method}{CODE}, "$CLASS has $method")

That fails badly for a number of reasons. If you're just testing a function, it's OK. If you're really testing whether a class provides a given method, it fails. For example, if you have an inherited method, your test fails even though the class "has" the method. Further, the method might no be inherited but also not yet installed in the symbol table, yet can() might be overridden to supply the method (I've had to do this for "load on demand" services.) If you have OO code, use Perl's OO facilities to work with it. Just peeking into the namespace isn't enough.


New address of my CGI Course.

Comment on Re^2: When test-driven development just won't do
Download Code
Replies are listed 'Best First'.
Re^3: When test-driven development just won't do
by xdg (Monsignor) on Aug 04, 2005 at 19:27 UTC

    You're absolutely right -- I wasn't intending to suggest it as a replacement for can_ok. I should have been clear that it's an example for when you want to see if code exists and is not inherited from a superclass (which is what I had needed to check at the time). Doesn't help identify when other modules have exported a function in, or for stuff handled with AUTOLOAD, or installed later, etc. All goes back to my point of needing clarity around what the actual question in before one knows how to write the test.


    Code written by xdg and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://480984]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (9)
As of 2015-11-26 12:05 GMT
Find Nodes?
    Voting Booth?

    What would be the most significant thing to happen if a rope (or wire) tied the Earth and the Moon together?

    Results (697 votes), past polls