相关疑难解决方法(0)

如何在对模块进行单元测试时模拟导入的子例程

考虑一个模块,它导出一个连接到Internet并返回结果的子例程:

unit module A;

sub download is export {
     "result from internet"  # Not the actual implementation, obviously.
}
Run Code Online (Sandbox Code Playgroud)

另一个导入并调用该子例程的模块:

use A;  # imports &download into this lexical scope
unit module B;

sub do-something is export {
     download().uc ~ "!!"   # Does something which involves calling &download
}
Run Code Online (Sandbox Code Playgroud)

现在我想为模块编写单元测试B.
但我不希望测试真正连接到互联网; 我希望他们使用download由我的测试脚本控制的子程序的模拟版本:

use Test;
plan 2;

use B;

my $mock-result;
my &mock-download = -> { $mock-result }

# ...Here goes magic code that installs &mock-download
# as …
Run Code Online (Sandbox Code Playgroud)

unit-testing mocking perl6

2
推荐指数
1
解决办法
342
查看次数

标签 统计

mocking ×1

perl6 ×1

unit-testing ×1