2013-04-30 75 views
1

我有我寫的測試腳本科羅測試::更多

工作科羅計劃這是我怎麼想測試一個削減版本

use Test::More ;#tests => 9; 

BEGIN{ 
    use_ok('EV') || print "Bail out!\n"; 
    use_ok('Coro') || print "Bail out!\n"; 
    use_ok('AnyEvent') || print "Bail out!\n"; 
    use_ok('Coro::AnyEvent') || print "Bail out!\n"; 
} 

my @coro; 
push @coro, async sub{ok(Coro::AnyEvent::sleep(2), 'sleep')}; 

push @coro, async sub{ok (1 == 1, 'one equals one')}; 
push @coro, async sub{isnt (1, 2, 'one does not equal two')}; 
#push @coro, async sub{is(EV::unloop, undef, 'unloop')}; 

#EV::run; 

map {ok($_->join, 'join')} @coro; 

這給了我

t/coro-test.t .. 
ok 1 - use EV; 
ok 2 - use Coro; 
ok 3 - use AnyEvent; 
ok 4 - use Coro::AnyEvent; 
ok 5 - one equals one 
ok 6 - one does not equal two 
Undefined subroutine &main:: called at /usr/lib/perl5/Coro/AnyEvent.pm line 218. 
Dubious, test returned 9 (wstat 2304, 0x900) 
All 6 subtests passed 

Test Summary Report 
------------------- 
t/coro-test.t (Wstat: 2304 Tests: 6 Failed: 0) 
    Non-zero exit status: 9 
    Parse errors: No plan found in TAP output 
Files=1, Tests=6, 0 wallclock secs (0.02 usr 0.01 sys + 0.18 cusr 0.03 csys = 0.24 CPU) 
Result: FAIL 

我的(真正的)程序設置協程,然後他們睡覺whist他們沒有做任何事情,所以它不是一個人爲的例子。

任何幫助感激地收到。 (我認爲unloop和EV ::運行不是必需的)

+0

而不是'use_ok('EV')|| print「Bail out!\ n」;'我寫'use_ok('EV')|| BAIL_OUT('使用EV失敗')「;'。感謝與'||'的提示,我一直在尋找如何正確處理加載模塊失敗的問題 – 2013-05-21 12:15:01

+0

但實際上你似乎沒有問題...這裏不是主意問題應該關閉,因爲沒有答案可以給 – 2013-05-21 12:16:43

+0

問題是我如何得到Test :: More與Coro一起工作,因爲我想這樣做,因爲我是一個粉絲Test :: More和Coro。 – KeepCalmAndCarryOn 2013-05-27 02:12:50

回答

1

我無法想象爲什麼Test :: More不能工作的原因,事實上,它適用於當前版本的Coro和我AnyEvent(EV或Perl作爲事件後端)。

我認爲你的問題可能是Coro :: AnyEvent :: sleep會返回Test :: More在你的系統上不喜歡的東西。假設Coro :: AnyEvent :: sleep無論如何都返回任何具體正在尋找麻煩的東西 - 返回值(如果有的話)是未記錄的,所以期望它是特定的東西使得你的程序依賴於未記錄的行爲,並且故障是預期的結果。

+0

現在也適用於我。愛你的工作的方式 – KeepCalmAndCarryOn 2014-01-06 21:53:11