运行 Minitest 时阻止用户输入
Preventing user input when running Minitest
当 运行 连接我的 Minitest 文件时,我的整个 Ruby 程序得到 运行 并提示用户输入。此处输入的任何值都不会用于测试。
有没有办法在 运行 测试文件时 hiding/ignoring 所有用户提示?是否也可以只 运行 正在测试的个别方法,而不是整个程序?
用于运行 Minitest 文件的命令:
ruby -Itest test_calc.rb
test_calc.rb:
require './calc'
require 'minitest/autorun'
class TestMarkupCalc < Minitest::Test
def test_amount_input_for_float
assert_kind_of(Float, amount_input("price"))
end
def test_amount_input_for_integer
assert_kind_of(Integer, amount_input("number"))
end
def test_flat_markup
assert_equal(1050, flat_markup(1000))
end
def test_num_workers_markup
assert_equal(0.06, num_workers(5))
end
end
根据您所说的内容和您发布的测试,我猜测您的程序没有定义 MarkupCalc
class 以及 amount_input
、flat_markup
和 num_workers
是顶级方法。要执行您要求的操作,您需要创建一个 class,例如:
class MarkupCalc
def self.amount_input(name)
# ...
end
def self.flat_markup(amount)
# ...
end
def self.num_workers(num)
# ...
end
end
然后重写您的测试以相应地调用方法:
class TestMarkupCalc < Minitest::Test
def test_amount_input_for_float
assert_kind_of(Float, MarkupCalc.amount_input("price")
end
# ...
end
当 运行 连接我的 Minitest 文件时,我的整个 Ruby 程序得到 运行 并提示用户输入。此处输入的任何值都不会用于测试。
有没有办法在 运行 测试文件时 hiding/ignoring 所有用户提示?是否也可以只 运行 正在测试的个别方法,而不是整个程序?
用于运行 Minitest 文件的命令: ruby -Itest test_calc.rb
test_calc.rb:
require './calc'
require 'minitest/autorun'
class TestMarkupCalc < Minitest::Test
def test_amount_input_for_float
assert_kind_of(Float, amount_input("price"))
end
def test_amount_input_for_integer
assert_kind_of(Integer, amount_input("number"))
end
def test_flat_markup
assert_equal(1050, flat_markup(1000))
end
def test_num_workers_markup
assert_equal(0.06, num_workers(5))
end
end
根据您所说的内容和您发布的测试,我猜测您的程序没有定义 MarkupCalc
class 以及 amount_input
、flat_markup
和 num_workers
是顶级方法。要执行您要求的操作,您需要创建一个 class,例如:
class MarkupCalc
def self.amount_input(name)
# ...
end
def self.flat_markup(amount)
# ...
end
def self.num_workers(num)
# ...
end
end
然后重写您的测试以相应地调用方法:
class TestMarkupCalc < Minitest::Test
def test_amount_input_for_float
assert_kind_of(Float, MarkupCalc.amount_input("price")
end
# ...
end