У меня есть стандартный код написания 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.
(я только что написал этот код из памяти, простите за любые опечатки или ошибки)
Несколько проще протестировать обработку ошибок в первой строке «die» (например, создать файл без записи с тем же именем, которое вы планируете записать).
Как я могу проверить обработку ошибок во второй (печатной) и третьей (закрытой) строчке "die"?
Единственный известный мне способ вызвать ошибку при закрытии - это исчерпать пространство в файловой системе во время записи, что НЕ легко сделать в качестве теста.
Я бы предпочел решения типа интеграционных тестов, а не тип модульных тестов (которые включали бы методы имитации ввода-вывода в Perl).