- Published on
Rubyを学ぶ3日目
- Authors
- Name
- よしかわ たいき
- @yoshikawataiki
Ruby を学ぶ 3 日目
前回の記事
論理演算子
&&
や||
のような論理演算子を使うと、複数の条件を 1 つにまとめることができます。
条件1 && 条件2
、条件 1 かつ条件 2
条件1 || 条件2
、条件 1 または条件 2
メソッドの定義
Ruby は def を使ってメソッドを定義します。
def add(a, b)
a + b
end
add(1, 2) #=> 3
Fizz Buzz 問題
ここでは、Fizz Buzz 問題を解く
以下の仕様になる。
- 3 で割り切れる数値を引数に渡すと、"Fizz"を返す。
- 5 で割り切れる数値を引数に渡すと、"Buzz"を返す。
- 15 で割り切れる数値を引数に渡すと、”Fizz Buzz”を返す。
- それ以外の数値はその数値を文字列に変えて返す。
def fizz_buzz(n)
if n % 15 == 0
'Fizz Buzz'
elsif n % 3 == 0
'Fizz'
elsif n % 5 == 0
'Buzz'
else
n.to_s
end
end
Minitest の基本
require 'minitest/autorun'
require './lib/fizz_buzz'
class FizzBuzzTest < Minitest::Test
def test_fizz_buzz
assert_equal '1', fizz_buzz(1)
assert_equal '2', fizz_buzz(2)
assert_equal 'Fizz', fizz_buzz(3)
end
end
Minitest 以外のテスティングフレームワーク
RSpec は独自の DSL を使ってテストコートを書きます。
require './lib/fizz_buzz'
RSpec.desctibe 'Fizz Buzz' do
example 'fizz_buzz' do
expect(fizz_buzz(1)).to eq '1'
expect(fizz_buzz(2)).to eq '2'
expect(fizz_buzz(3)).to eq 'Fizz'
end
end
Ruby のテスティングフレームワークの中で最も歴史が古い、test-unit がある。
Ruby 本体のテストコードも test-unit で書かれています。
require 'test/unit'
require './lib/fizz_buzz'
class FizzBuzzTest < Test::Unit::TestCase
def test_fizz_buzz
assert_equal '1', fizz_buzz(1)
assert_equal '2', fizz_buzz(2)
assert_equal 'Fizz', fizz_buzz(3)
end
end