Ruby Minitest 简单测试引发错误 - 错误的参数数量错误

Ruby Minitest simple test raise error - wrong number of arguments error

我正在尝试学习 TDD 方法,为此我使用的是纯 Ruby 应用程序,它负责格式化英国 phone 号码。在我的 class 中,我想测试空格和是否从给定的 phone 数字中删除。基本上我正在尝试测试 Ruby .delete(' ') 方法。

测试模块

# lib/formatter/phone_number/uk.rb

module Formatter
  module PhoneNumber
    module Uk
      
      (...)

      def self.format(number)
        number.delete(' ')
      end
    end
  end
end

测试

# test/lib/formater/phone_number/uk_test.rb

require 'minitest/autorun'

class UkTest < Minitest::Test
  test 'remove whitespaces' do
    invalid_number = '+44 12 12 12 12   '
    Formatter::PhoneNumber::Uk.format(invalid_number)

    assert_equal '+4412121212'
  end
end

哪个给我一个错误:

test/lib/formater/phone_number/uk_test.rb:6:in `test': wrong number of arguments (given 1, expected 2) (ArgumentError)

除了测试 Ruby 中内置的方法不是一个好主意之外,我做错了什么?

您必须定义一个测试方法(方法名称必须以 test_ 开头)。

在测试方法中定义断言。在您的情况下,您将预期值与方法的结果进行比较。

class UkTest < Minitest::Test
  def test_remove_whitespaces
    invalid_number = '+44 12 12 12 12   '
    assert_equal '+4412121212', Formatter::PhoneNumber::Uk.format(invalid_number)
  end
end

一个文件中的完整测试:

module Formatter
  module PhoneNumber
    module Uk
      def self.format(number)
        number.delete(' ')
      end
    end
  end
end

require 'minitest/autorun'

class UkTest < Minitest::Test
  def test_remove_whitespaces
    invalid_number = '+44 12 12 12 12   '
    assert_equal '+4412121212', Formatter::PhoneNumber::Uk.format(invalid_number)
  end
end

minitest/spec

相同的测试
require 'minitest/spec'
describe Formatter::PhoneNumber::Uk do
  it 'removes spaces from numbers' do
        invalid_number = '+44 12 12 12 12   '
        _(Formatter::PhoneNumber::Uk.format(invalid_number)).must_equal('+4412121212')
  end
end