为什么这个perl测试中的* STDERR是空的?

时间:2018-03-15 09:51:19

标签: perl testing stderr mojolicious

我有从Mojolicious(mojo / log.t)复制的以下代码块。 我正在测试的应用程序$app->log->warn('whatever');。 不幸的是,当我将测试作为make test的一部分运行时,STDERR恰好是空的。当我用prove -lv t/basic.t运行它时,它成功了。我的计划有什么问题。测试程序的完整源代码是here 谢谢!

my $buffer = '';
{
  open my $handle, '>', \$buffer;
  local *STDERR = $handle;
  require Blog;
  my $blog = Blog->new;
  $blog->startup();
}
like $buffer, qr/"routes" key must point to an ARRAY/,
  'right warning about ARRAY reference';

1 个答案:

答案 0 :(得分:1)

将帖子 您可能需要将环境变量MOJO_LOG_LEVEL设置为warn。 Mojo检查日志记录级别的方式是$ENV{MOJO_LOG_LEVEL}(默认情况下fatal,如果使用Test :: Mojo)优先级高于应用程序中设置的级别。

我使用了Mojolicious 7.59版来检查这些东西。