よしかわーるど

プログラミングで世界を変える

2018-09-11

Rubyを学ぶ 3日目

Rubyを学ぶ 3日目

前回の記事

Ruby を学ぶ 2 日目

論理演算子

&&||のような論理演算子を使うと、複数の条件を 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

次回の記事

Ruby を学ぶ 4 日目