目的
Railsのデフォルトのテスティングフレームについてアウトプットする。
テストコードのひな形
Minitestを使ったテストコードのひな形は下記の通り。
require 'minitest/autorun'
class SampleTest < Minitest::Test
def test_sample
assert_equal 5, 'こんにちは'.length
end
end
・1行目でMinitestに必要なライブラリを呼び出す。
・SampleTestクラスにMinitest::Testクラスを継承させる。
・SampleTestクラス内に、実行対象となるテストメソッドを定義する(test_sample)
という流れで作成できる。
assert_equalは検証メソッドで、第1引数には予想される値、第2引数は検証する値を入れる。
したがって、test_sampleメソッドは、「'こんにちは'という文字列の文字数」が「5文字」であるかをテストしている。
結果として等しくなるので、テストはパスする。
・runs: 実行したテストメソッドの件数(test_sampleのみなので1件)
・assertions: 実行した検証メソッドの件数(assert_equalを1回使用)
・failures: 検証に失敗したテストメソッドの件数
・errors: 検証中にエラーが出たテストメソッドの件数
・skips: skipメソッドにより実行をスキップされたテストメソッドの件数
を表している。
検証メソッドの例
http://docs.seattlerb.org/minitest/Minitest/Assertions.html
MinitestのAPIドキュメントを参考にいくつか検証メソッドを使ってみる。
require 'minitest/autorun'
def hello(name)
puts "#{name}さん、こんにちは!"
end
class HelloTest < Minitest::Test
def test_hello
assert_output("Bobさん、こんにちは!\n") { hello("Bob") }
end
end
assert_outputを使うと、標準出力した内容をテストできる。
require 'minitest/autorun'
def multiple_of_eleven?(number)
number % 11 == 0
end
class MultipleOfElevenTest < Minitest::Test
def test_true
assert multiple_of_eleven? 121
end
def test_false
refute multiple_of_eleven? 13
end
end
assert,refuteメソッドを使うと、真偽をテストできる。
後書き
Minitestを使うと簡単にテストを実装できるので、活用してみる。
今度はRspecについてもアウトプットしたい。
参考文献
プロを目指す人のためのRuby入門
伊藤 淳一[著]