得到这个代码:
unit module Command::CanRun;
enum OS <win nix>;
sub determine-os {
return 'nix' when $*SPEC.gist.contains('unix', :i);
return 'win' when $*DISTRO.is-win;
}
我想对这个进行单元测试:
ok Command::CanRun::determine-os, 'can determine os';
然而,如果不导出determine-os
子:,我就无法做到这一点
Could not find symbol '&determine-os' in 'Command::CanRun'
还没有找到任何关于如何在模块中为未导出的潜艇执行此操作的指导。谢谢
sub
默认为词法范围,这意味着它不能从外部访问。通过使其our
作用域:,可以通过完全限定的包名称使其可用
our sub determine-os {
return 'nix' when $*SPEC.gist.contains('unix', :i);
return 'win' when $*DISTRO.is-win;
}
另一种解决方案是在标签(例如is export(:internals)
(下导出它,这意味着必须显式导入它(use Command::CanRun :internals;
(,使其不在模块导出的标准API中。