目錄

名稱

Test::Builder::Module - 測試模組的基本類別

語法

# Emulates Test::Simple
package Your::Module;

my $CLASS = __PACKAGE__;

use parent 'Test::Builder::Module';
@EXPORT = qw(ok);

sub ok ($;$) {
    my $tb = $CLASS->builder;
    return $tb->ok(@_);
}

1;

說明

這是基於 Test::Builder 模組的超類別。它提供了一些常見的功能,以及取得基礎 Test::Builder 物件的方法。

匯入

Test::Builder::Module 是 Exporter 的子類別,這表示您的模組也是 Exporter 的子類別。@EXPORT、@EXPORT_OK 等都正常運作。

提供了一些方法來為您執行 use Your::Module tests => 23 部分。

import

Test::Builder::Module 提供一個 import() 方法,其作用方式與 Test::More 的基本方式相同,設定計畫並控制函數和變數的匯出。這允許您的模組獨立於 Test::More 設定計畫。

傳遞給 import() 的所有參數都會傳遞給 Your::Module->builder->plan(),除了 import =>[qw(要匯入的事項)]

use Your::Module import => [qw(this that)], tests => 23;

表示要匯入函數 this()that(),以及將計畫設定為 23 個測試。

import() 也將建構函式的 exported_to() 屬性設定為 import() 函數的呼叫者。

可以透過覆寫 import_extra(),將其他行為新增到 import() 方法。

import_extra

Your::Module->import_extra(\@import_args);

import_extra()import() 呼叫。它提供機會讓您可以根據匯入清單,將行為新增到模組中。

不應傳遞給 plan() 的任何額外引數,都應由這個方法移除。

請參閱 Test::More,了解其使用範例。

注意這個機制非常不穩定,而且可能會變更,因為它在目前的形式中感覺有點像是醜陋的駭客手法。

Builder

Test::Builder::Module 提供一些取得基礎 Test::Builder 物件的方法。

builder

my $builder = Your::Class->builder;

這個方法傳回與 Your::Class 關聯的 Test::Builder 物件。它不是建構函式,所以您可以隨意呼叫它。

這是取得 Test::Builder 物件的首選方式。您不應透過 Test::Builder->new 取得它,這是之前建議的方法。

builder() 傳回的物件可能會在執行階段變更,所以您應在每個函數中呼叫 builder(),而不是將它儲存在全域變數中。

sub ok {
    my $builder = Your::Class->builder;

    return $builder->ok(@_);
}

另請參閱

Test2::Manual::Tooling::TestBuilder 說明 Test2 提供的,用於撰寫測試模組的改良選項。