miyohideの日記

技術的なメモなどを記しています

2023年2月11日(土)Rubyでのテストの書き方

Rubyでのテストの書き方

毎回忘れる。以下のスクリプトmain.rbに対してテストを書くことを考える。

# main.rb
class Main
  def self.find_sum_of_digits(n)
    # なっかすごい処理
  end

  def run
    # なんかいろんな処理
  end
end

if __FILE__ == $0
  puts Main.new.run
end

こんな感じでテストファイルを書く。

# main_test.rb
require 'minitest/autorun'
require './main'

class MainTest < Minitest::Test
  def test_find_sum_of_digits_1
    assert_equal Main.find_sum_of_digits(10), 1
  end
end

実行は以下のようにするとOK

$ ruby main_test.rb
Run options: --seed 49321

# Running:

.

Finished in 0.000511s, 7827.7897 runs/s, 7827.7897 assertions/s.
1 runs, 1 assertions, 0 failures, 0 errors, 0 skips

テスト対象のmain.rbにて以下の記述をしていると、ファイルを直接実行した時のみ処理を実行する(今回の場合、puts Main.new.run)ことができる。このため、テストファイルにてrequireしたときには処理が動かない。

if __FILE__ == $0
  puts Main.new.run
end