1

テストスクリプトを書いているCoroプログラムが動作しています

これは、私がテストしようとしている方法の縮小版です

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

私の(実際の)プログラムは、コルーチンをオフに設定し、何もする必要がないため、不自然な例ではありません。

感謝して受け取った助け。(unloop と EV::run は必要ないと思います)

4

1 に答える 1

1

Test::More が機能しない理由を想像することはできません。実際、現在のバージョンの Coro と AnyEvent (およびイベント バックエンドとして EV または Perl のいずれか) で機能します。

あなたの問題は、Coro::AnyEvent::sleep が Test::More があなたのシステムで気に入らない何かを返すことだと思います。Coro::AnyEvent::sleep が特定のものを返すと仮定すると、とにかく問題を探しています - 戻り値があれば、それは文書化されていません。結果。

于 2013-12-29T00:47:15.363 に答える