将分层Perl模块导入本地名称空间

Pau*_*han 1 perl unit-testing

情况:

我有一个模块Foo::Quux::Bar,住在里面./Bar.pm.我需要能够单独测试Bar.但是,由于我无法控制的情况设置Foo/Quux目录结构,这是不利的.

所以我想做的是有一些unit_test_use例程,让我抓住Bar.pm并将其函数移动/复制到本地命名空间(注意Bar有一个package Foo::Quux::Bar说明符),以便我测试愉快.

在Perl文档中喋喋不休并没有帮助我.

fri*_*edo 5

假设您的Bar.pm以标准方式导出其功能,您可以加载它require并手动导入:

BEGIN { 
    require 'Bar.pm';        # now the package Foo::Quux::Bar is set up
    Foo::Quux::Bar->import;
};
Run Code Online (Sandbox Code Playgroud)

但是如果可以的话,绝对值得研究以标准方式设置目录结构.

  • 把它放在一个`BEGIN {}`块中,它就像一个假的`use`语句. (2认同)