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

Why *STDERR in this perl test is empty?

我从 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';

[已编辑] 您可能需要将环境变量 MOJO_LOG_LEVEL 设置为 warn。 Mojo 检查日志级别的方式是 $ENV{MOJO_LOG_LEVEL}(如果使用 Test::Mojo,则默认为 fatal)优先于应用程序中设置的级别。

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