Tôi đang thực hành để tạo mô-đun mới bằng Module :: Starter. Tôi đã viết một vài trường hợp thử nghiệm cho một gói, và họ chạy OK đôi khi.Làm cách nào để gỡ lỗi mô-đun được tạo bởi Module :: Starter?
Tuy nhiên tôi nhận thấy có hai vấn đề:
Khi các trường hợp thử nghiệm thất bại, tôi muốn đặt một số báo cáo in trong hàm đang được thử nghiệm. Tôi chạy
make test
và nó chỉ cho tôi biết rằng các trường hợp thử nghiệm của tôi không thành công, nó không hiển thị đầu ra được in của tôi, mặc dù tôi thực sự chắc chắn rằng các báo cáo in đạt được.Giả sử tôi có ba trường hợp thử nghiệm để kiểm tra một hàm, tôi đặt một lệnh in bên trong hàm, khi các trường hợp thử chạy, nó báo cáo rằng chỉ có 1 trong ba trường hợp thử nghiệm được chạy. Nếu tôi xóa câu lệnh in, cả ba trường hợp kiểm tra sẽ chạy. Tại sao vậy?
Dưới đây là mã của tôi:
# package declaration and stuff...
sub get_in {
my ($hash, @path) = @_;
my $ref = $hash;
print 'lol'; # This is the troublesome print statement. Remove this statement and all three test cases will run and pass
foreach (@path) {
if (ref($ref) eq 'HASH' && exists $ref->{$_}) {
$ref = $ref->{$_};
} else {
return undef;
}
}
return $ref;
}
Đây là trường hợp thử nghiệm:
use Test::More tests => 3;
use strict;
use warnings;
use diagnostics;
require_ok('Foo::Doc');
ok(Foo::Doc::get_in({ 'a' => { 'b' => { 'c' => 101 } } }, 'a', 'b', 'c') == 101);
ok(@{ Foo::Doc::get_in({ 'a' => { 'b' => { 'c' => [ 1, 2, 3 ] } } }, 'a', 'b', 'c') } == @{ [ 1, 2, 3 ] });
Câu hỏi này không thực sự cụ thể đối với Mô-đun :: Người khởi xướng. Bố cục chuẩn của dự án Perl bao gồm một thư mục 't' với các phép thử' * .t' bằng cách sử dụng Test :: Simple hoặc Test :: More hoặc một số để kiểm tra thành công hoặc thất bại đầu ra. Mỗi bộ công cụ xây dựng Perl cung cấp các công cụ để chạy thử nghiệm của bạn và xuất kết quả trong báo cáo chuẩn bằng cách sử dụng các công cụ được cung cấp trong lõi Perl. – zostay