I am trying to write a modulino that will accept various parameters through GetOpt::Long. I want to write unit tests for subs that will behave differently depending on the parameters. A SSCCE modulino and test file demonstrate the problem. The modulino:

package mdlno; use strict; use warnings; use feature 'say'; my $param = shift; say main() unless caller(); sub main { $param //= 'World'; return 'Hello ' . $param; }

Tests:

use strict; use warnings; use Test::More tests => 2; use FindBin qw( $RealBin ); use lib $RealBin; use mdlno; my $rtn = mdlno->main(); is $rtn, 'Hello World', 'Works without parameter'; $mdlno::param = 'and goodbye'; $rtn = mdlno->main(); is $rtn, 'Hello and goodbye', 'Works with parameter';

The first test passes but the second fails. I have tried all sorts of variations including Exporter and local, but using the debugger tells me every time that the address used in the test code differs from the address of the parameter in the modulino. All clues gratefully received.

Regards,

John Davies


In reply to [Solved] Parameter injection for testing by davies

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.