Rubyを学ぶ 3日目
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