[英]Changing $*DISTRO values for testing
的:闡述raiph的回答*
在$*DISTRO
標記它作為一個動態變量。 您可以在任何范圍內重新聲明它,從那里調用的代碼將看到重新聲明的值:
{
my $*DISTRO = ...;
# coded called from here sees the redeclared value
}
# code called from here sees the original value
現在,問題仍然存在,你用什么來代替這些討厭的...
?
在最簡單的情況下,一個只包含被測代碼所需的模擬:
{
my class Distro { has $.is-win }
my $*DISTRO = Distro.new( :is-win );
# call your test code here
}
如果代碼需要Distro
更多屬性,只需將它們添加到模擬Distro
類中即可。
如果代碼需要一個“真正的* Distro
對象,出於某種原因,您可以實例化內置對象。構造函數.new
並沒有真正記錄在案,但源代碼使其期望的參數非常明顯。
好的,我比較快地得到了答案。 $*DISTRO
實際上是PROCESS::<$DISTRO>
的只讀別名
所以我們只需要做:
my $*DISTRO = Distro.new(:is-win,:release<11>,:path-sep('|||'),:auth<unknown>,:name<mswin32>,:desc<Test>,:version<v11>);
say $*DISTRO.is-win; #OUTPUT: «True»
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.