Ruby Minitest 基本介绍

Basic introduction to Ruby Minitest

我是第一次使用 minitest,我很难理解如何编写我的第一个测试方法。谁能帮助我理解我应该在下面的 Player 方法中测试什么 get_name?

class Player
  def get_name(player)
    puts `clear`
    center("#{player}, whats your name bro/ladybro?")
    @name = gets.chomp
    until @name =~ /\A[[:alnum:]]+\z/
      center("you can do a combination of alphanumeric characters")
      @name = gets.chomp
    end
  end
end

这是我的测试文件中的内容,我想我只是想测试正则表达式以确保它包含字母和数字字符。

class TestPlayer < Minitest::Test
  def test_get_name
    describe "get_name" do
      it "should allow an input of alphanumeric characters" do
        assert_match(/\A[[:alnum:]]+\z/, "test_string123")
      end
    end
  end
end

但是当我 运行 测试时,似乎什么也没有发生,我想我应该有 1 个断言。

Run options: --seed 10135

# Running:

.

Finished in 0.001565s, 638.9776 runs/s, 0.0000 assertions/s.

1 runs, 0 assertions, 0 failures, 0 errors, 0 skips

任何人都可以帮助演示我应该如何为这种情况编写测试吗?谢谢。

Minitest 测试可以描述如下(Assertion 语法):

  1. 它只是一个简单的 Ruby 文件,其中有一个 class 通常是 Minitest::Test 的子 class。
  2. 方法setup将首先被调用;您可以定义每个测试中可能需要的对象。例如:考虑在 setup 方法中的实例变量中分配 Player 对象的实例,以便您可以在测试的其他地方使用它 class.
  3. 在以字符串开头的方法中定义了一个测试:test_;可以使用任何其他方法来减少代码重复,但它不会被视为测试的一部分。
  4. 通常您应该考虑测试您要测试的方法的return值。
  5. 使用外部输入测试方法是 more convoluted,我建议从具有可测试输出的测试方法开始。