我是 minitest 的新手,也是 ruby 的新手,并且真的厌倦了尝试用 google 搜索这个问题而没有结果。我真的很感激您的帮助:
ruby minitest中assert_output的确切语法是什么?
我在 github 或其他地方找到的所有内容似乎都使用括号。然而,当我不使用带有assert_output的块时,我收到一条错误消息,这是有意义的,因为该方法的定义包含yield语句。
但无论我如何尝试,我都无法让它发挥作用。
测试类.rb
class TestClass
def output
puts 'hey'
end
end
测试_测试.rb
require 'minitest/spec'
require 'minitest/autorun'
require_relative 'testclass'
class TestTestClass < MiniTest::Unit::TestCase
def setup
@test = TestClass.new
end
def output_produces_output
assert_output( stdout = 'hey' ) { @test.output}
end
end
我得到的是:
在 0.000000 秒内完成测试,NaN 测试/秒,NaN 断言
0 次测试、0 次断言、0 次失败、0 次错误、0 次跳过
我究竟做错了什么?
这一定是完全显而易见的事情,但我无法弄清楚。
感谢您的帮助。
为了运行您的测试方法,方法名称需要以test_
。还有,方式assert_output工作原理是该块将写入 stdout/stderr,并且将检查参数是否与 stdout/stderr 匹配。检查此 IMO 的最简单方法是传入正则表达式。这就是我编写测试的方式:
class TestTestClass < MiniTest::Unit::TestCase
def setup
@test = TestClass.new
end
def test_output_produces_output
assert_output(/hey/) { @test.output}
end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)