我寫測試用例與測試:: WWW Perl的催化劑基於Web的應用程序來打印可變/散在測試用例的Test :: WWW ::機械化::催化劑::機械化::催化劑。我卡在某個地方,我想通過打印變量/散列值來排除故障。但問題是它只顯示Catalyst App的控制檯日誌。如何在控制檯中打印變量值?如催化劑$ c-> log-> info($ variable value)。不能在Perl催化劑應用
1
A
回答
1
當您使用prove
運行測試時,您需要添加-v
標誌以查看所有測試輸出。
$ prove -v t/
這樣它就不會吃掉所有的TAP輸出。
然後,您可以使用diag
from Test::More將註釋輸出到TAP或the warn
builtin。
use Test::More;
pass 'first test';
diag 'this is a diagnostical message';
my $res = pass 'another test';
warn $res;
done_testing;
產生這個輸出(在Windows上):
$ prove -v foo.pl
foo.pl .. # this is a diagnostical message
1 at foo.pl line 7.
ok 1 - first test
ok 2 - another test
1..2
ok
All tests successful.
Files=1, Tests=2, 0 wallclock secs (0.02 usr + 0.02 sys = 0.03 CPU)
Result: PASS
不過,我通常做的是使用Data::Printer的p
功能,這也寫入STDERR像一個警告。它比Data :: Dumper更強大,並且很好地顯示對象。 p
的調試輸出也將在TAP中的某處結束。
如果應用程序正在進行大量日誌記錄,可能會引起混淆,因此關閉Catalyst日誌是一個選項。爲此,請使用設置爲0
的環境變量CATALYST_DEBUG
運行測試。
$ CATALYST_DEBUG=0 prove -v t/
相反,如果你希望你的調試輸出從測試進入催化劑日誌,你需要抓住的上下文。這有點棘手,但可能。
use Test::More
use Test::WWW::Mechanize::Catalyst;
use Catalyst::Test 'MyApp';
use Data::Printer;
my $mech = Test::WWW::Mechanize::Catalyst->new(catalyst_app => 'MyApp');
$mech->get_ok("/");
my($res, $c) = ctx_request('/');
$c->log->warn(np $res); # this will go to the Catalyst log
該代碼同時使用Test::WWW::Mechanize::Catalyst和Catalyst::Test。如果你傳遞相同的應用程序名稱,他們將無法進入彼此的方式,該應用程序將只啓動一次。
我展示與get_ok
一個普通機甲的測試和催化劑的ctx_request
功能::測試。它返回一個HTTP :: Response對象和來自該請求的上下文$c
。您可以在上下文中運行->log
,並且您的調試將轉到Catalyst日誌。我使用Data :: Printer中的np
,它返回由Data :: Printer生成的調試信息,而不是將其寫入STDOUT,因此我可以將它放入Catalyst日誌中。
相關問題
- 1. Perl催化劑應用程序修改
- 2. 使用催化劑
- 3. Perl催化劑控制器鏈
- 4. Perl催化劑編碼問題
- 5. Perl催化劑:結果集和關係
- 6. Perl的DBI連接工程,但不能與催化劑
- 7. perl模板::合金與催化劑不能正常顯示
- 8. Perl催化劑:如何重新使用應用程序
- 9. 下催化劑MVC
- 10. 催化劑應用範圍變量
- 11. 催化劑優化階段
- 12. 業務催化劑響應目錄表
- 13. 爲了研究催化劑
- 14. 催化劑:Log4perl和Apache
- 15. 業務催化劑分類
- 16. Minify CSS業務催化劑
- 17. nginx和催化劑配置
- 18. Vim插件使用催化劑(Perl)進行Web開發
- 19. 在催化劑SOAP :: Lite客戶端讓我所有的催化劑的應用程序訪問或超時
- 20. 我不能哈希添加到藏匿在催化劑
- 21. 將催化劑鏈傳遞給催化劑鏈w/$ c->訪問
- 22. 使用催化劑::型號:: MenuGrinder
- 23. 使用催化劑的動態菜單
- 24. 催化劑模型緩存dbix調用
- 25. 試圖本地化催化劑模板
- 26. Perl催化劑:創建並強制下載PDF
- 27. Perl的催化劑 - 無法呈現模板..........沒有找到
- 28. Perl催化劑和FastCgi錯誤記錄問題
- 29. Perl催化劑,傳遞到隱藏2模板部分
- 30. 催化劑perl MVC框架每秒低請求
我現在無法訪問Catalyst。我會一旦修改就修改。 – simbabque
你是我的冠軍simbabque,-v做到了魔術。再次感謝 –
simbabque,再次感謝您分享這麼好的信息。 –