如何对 Raku 中的模块未导出的潜艇进行单元测试?

  • 本文关键字:单元测试 Raku 模块 raku
  • 更新时间 :
  • 英文 :


得到这个代码:

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中。

最新更新