使用Minitest
- 使用
assert_equal
断言
- 应用场景:用于验证两个值是否相等,常用于验证方法的返回值是否符合预期。
- 示例:
require'minitest/autorun'
# 假设存在两个模块,ModuleA和ModuleB
module ModuleA
def self.call_module_b
ModuleB.do_something
end
end
module ModuleB
def self.do_something
'expected_result'
end
end
class ModuleInteractionTest < Minitest::Test
def test_module_interaction
result = ModuleA.call_module_b
assert_equal 'expected_result', result
end
end
- 使用
assert_raises
断言
- 应用场景:用于验证一段代码是否会抛出特定类型的异常,常用于验证模块交互中是否在错误情况下抛出预期异常。
- 示例:
require'minitest/autorun'
module ModuleC
def self.call_module_d
ModuleD.do_something_that_raises
end
end
module ModuleD
def self.do_something_that_raises
raise StandardError, 'An error occurred'
end
end
class ModuleExceptionInteractionTest < Minitest::Test
def test_module_exception_interaction
assert_raises(StandardError) do
ModuleC.call_module_d
end
end
end
使用RSpec
- 使用
expect(...).to eq(...)
断言
- 应用场景:与Minitest的
assert_equal
类似,用于验证两个值是否相等,在RSpec中这是验证值相等的常用方式。
- 示例:
require 'rspec'
module ModuleE
def self.call_module_f
ModuleF.do_something
end
end
module ModuleF
def self.do_something
42
end
end
describe 'Module Interaction' do
it 'calls ModuleF and returns the expected value' do
result = ModuleE.call_module_f
expect(result).to eq(42)
end
end
- 使用
expect { }.to raise_error(...)
断言
- 应用场景:与Minitest的
assert_raises
类似,用于验证一段代码块是否会抛出特定类型的异常。
- 示例:
require 'rspec'
module ModuleG
def self.call_module_h
ModuleH.do_something_that_raises
end
end
module ModuleH
def self.do_something_that_raises
raise ArgumentError, 'Invalid argument'
end
end
describe 'Module Exception Interaction' do
it 'calls ModuleH and raises an ArgumentError' do
expect { ModuleG.call_module_h }.to raise_error(ArgumentError)
end
end