- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我需要编写一些测试以通过 minitest 检查输出到 STDERR
它工作正常,如果我想检查到 STDOUT 的输出,但如果尝试检查 STDERR - asser_output 根本没有捕获其中的任何字符串
所以我的代码是这样的:
require 'minitest/autorun'
class OutputTest < MiniTest::Test
def test_output_stdout
assert_output(/Test/, '') {puts 'Test'}
end
def test_output_stderr
assert_output('', /Test/) {STDERR.puts 'Test'}
end
end
它给我错误:
1) Failure:
OutputTest#test_output_stderr [test/assert_test.rb:9]:
In stderr.
Expected /Test/ to match "".
2 runs, 4 assertions, 1 failures, 0 errors, 0 skips
来自 assert_output
documentation此方法的第二个参数是用于检查 STDERR 的模式,但它不起作用。我做错了什么?
最佳答案
如果您使用 $stderr
而不是 STDERR
,它会起作用:
assert_output('', /Test/) { $stderr.puts 'Test' }
在内部,assert_output
使用 capture_io helper 。这将 $stdout
和 $stderr
与两个 StringIO 交换,产生 block ,并交换 $stdout
和 $stderr
回来。这是可能的,因为 $stdout
和 $stderr
是变量。
STDOUT
和 STDERR
是在 Object 上定义的常量类(class)。因此它们不能像 $stdout
和 $stderr
那样交换。在执行 STDERR.puts
时,输出未被 minitest 助手捕获,断言失败。
关于ruby - Minitest `assert_output` 对 stderr 的错误检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34351144/
我是 minitest 的新手,也是 ruby 的新手,我真的厌倦了用谷歌搜索这个问题却没有结果。非常感谢您的帮助: ruby minitest 中 assert_output 的确切语法是什么?
我需要编写一些测试以通过 minitest 检查输出到 STDERR 它工作正常,如果我想检查到 STDOUT 的输出,但如果尝试检查 STDERR - asser_output 根本没有捕获其中的任
我是一名优秀的程序员,十分优秀!