2013-07-22 50 views
2

我有針對給定的Base.pm模塊下面的一段代碼:測試容器(單件)

use Application::Container; 

my $container; 

sub container { 
    unless (defined($container)) { 
     $container = Application::Container->instance; 
    } 
    return $container; 
} 

sub configuration { 
    my ($class) = @_; 
    return $class->container->get('Application::Base'); 
} 

sub log { 
    my ($class) = @_; 
    $class->container->get('Application::Log'); 
} 

# and many more similar subroutines 
... 

在哪裏應用::容器是一個對象容器模塊,如Micro::Container

如何爲此Base.pm模塊編寫測試代碼?

爲什麼你需要測試?

我不知道,但對於我的應用程序中的每個.pm.pl文件,我應該有一個相應的.t測試代碼。

+0

我真的不明白這個問題。我如何編寫測試代碼?那麼,你打開你的編輯器,然後按鍵盤上的鍵?具體問題是什麼?測試一個Singleton?一般的Perl測試? – innaM

+0

@innaM測試單例。嗯,例如當我打電話$ configuration = Application :: Container-> configuration();並使用Dumper打印我得到'Application :: Base'模塊的所有內容,我不知道如何比較期望值和獲得的值,我試過了:ok($ configuration-> isa('Application :: Base')) ,「這是正確的課程」);但它告訴我,它不能在未引用的引用上調用該方法 – ado

回答

1
use Test::More; 
use Application::Container; 

my $test_container = $Application::Container::container; 

is($test_container,undef,'container is not defined'); 

my $test_container = Application::Container->container(); 
my $test_container_singleton = $Application::Container::container; 

ok($test_container,$test_container_singleton,'container is good');