DVK*_*DVK 3 testing perl integration-testing die
我有一个沼泽标准的Perl文件编写代码,具有(希望)适当的错误处理,其类型为:
open(my $fh, ">", "$filename") or die "Could not open file $filname for writing: $!\n";
# Some code to get data to write
print $fh $data or die "Could not write to file $filname: $!\n";
close $fh or die "Could not close file $filname afterwriting: $!\n";
# No I can't use File::Slurp, sorry.
Run Code Online (Sandbox Code Playgroud)
(我只是从内存中编写此代码,请原谅任何错别字或错误)
在第一个“ die”行中测试错误处理有些容易(例如,创建一个与您打算编写的名称相同的不可写文件)。
我知道在关闭时引起错误的唯一方法是在写入时文件系统上的空间不足,这很难作为测试。
我更喜欢集成测试类型解决方案,而不是单元测试类型(这将涉及在Perl中模拟IO方法)。
使用错误的文件句柄会使它们都失败
use warnings;
use strict;
use feature 'say';
my $file = shift || die "Usage: $0 out-filename\n";
open my $fh, '>', $file or die "Can't open $file: $!";
$fh = \*10;
say $fh 'writes ok, ', scalar(localtime) or warn "Can't write: $!";
close $fh or warn "Error closing: $!";
Run Code Online (Sandbox Code Playgroud)
版画
在...上未打开的文件句柄10上的say() 无法写入:错误的文件描述符在... 在...上未打开的文件句柄10上的close() 错误关闭:错误的文件描述符在...
例如,如果您不想看到perl的警告,则将其捕获,$SIG{__WARN__}并将消息打印到文件(或STDOUT)中。
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |