Ruby Minitest测试UK手机号格式化方法报参数数量错误如何解决
问题原因及修复方案
- 问题1:Minitest语法依赖缺失导致参数报错
你使用的test '用例名' do ... end是Minitest Spec风格的DSL语法,原生Minitest::Test默认不支持该写法,在没有引入minitest/spec依赖的情况下直接调用,就会触发test方法参数不匹配的错误。
修复方案二选一:
- 保留Spec风格写法,在测试文件头部新增
require 'minitest/spec' - 改用原生Minitest写法,将测试用例定义为以
test_开头的实例方法:
def test_remove_whitespaces # 测试逻辑 end
- 问题2:
assert_equal参数缺失assert_equal要求传入预期值和实际运行结果两个参数,你当前只传入了预期值,没有把format方法的执行结果作为第二个参数传入,即使修复第一个报错,后续运行也会触发新的参数错误。 - 问题3:路径拼写错误(潜在加载问题)
你的模块存放在lib/formatter/...路径下,但测试文件放在test/lib/formater/...路径,formatter少写了一个字母t,后续自动加载代码时会找不到对应模块。
修复后完整测试代码示例:
# test/lib/formatter/phone_number/uk_test.rb 注意路径拼写已修正 require 'minitest/autorun' # 引入spec依赖支持test '描述'语法 require 'minitest/spec' class UkTest < Minitest::Test test 'remove whitespaces' do invalid_number = '+44 12 12 12 12 ' # 保存format方法执行结果 result = Formatter::PhoneNumber::Uk.format(invalid_number) # 传入预期值+实际值两个参数 assert_equal '+4412121212', result end end
内容的提问来源于stack exchange,提问作者mr_muscle
相关产品推荐
相关产品推荐

