Ruby Minitest的基本介绍

时间:2015-01-19 14:21:04

标签: ruby testing minitest assertions

我第一次使用minitest,我无法理解如何编写我的第一个测试方法。任何人都可以帮助我在下面的播放器方法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

但是当我运行测试时,似乎没有任何事情发生,我想我会假设有一个断言。

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

任何人都可以协助演示如何为这种情况编写测试吗?感谢。

1 个答案:

答案 0 :(得分:1)

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

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