paizaエンジニア抹殺世界
問題文要約。
0から9の数字を3つ入力すると開く扉があるとする
鍵の番号は左から 2 つまで判明しており、3つ目は以下の法則で決まる
・判明している二つを足して10で割ったときの余り
2つ目までの数字を与えるので3つ目を求める
テストコードの大枠を作る
spec/paiza_lebelD_spec.rb
require 'spec_helper'
RSpec.describe Lebel_D do
end
class名だけ作る
lib/lpaiza_lebelD.rb
class Lebel_D
end
$ bundle exec rspec
0 examples, 0 failures
## テストコード
判明している二つの数字を引数にする(num_1,num_2)
期待する結果は2なのでイコールの右には2を置く
spec/paiza_lebelD_spec.rb
RSpec.describe Lebel_D do
it '荒れ果てた警察署' do
result = Lebel_D.new.key(num_1: 4, num_2: 8)
expect(result).to eq 2
end
end
$ bundle exec rspec
undefined method `key' for #<Lebel_D:0x00007fc72591ae08>
メソッドを作る
lib/lpaiza_lebelD.rb
class Lebel_D
def key(num_1:, num_2:)
end
end
keyメソッドに二つの引数を渡す
$ bundle exec rspec
1) Lebel_D 荒れ果てた警察署
Failure/Error: expect(result).to eq 2
expected: 2
got: nil
エラーメッセージが変わりました
期待していた「2」ではなく「nil」が帰ってきた
メソッドの中身を書く
lib/lpaiza_lebelD.rb
class Lebel_D
def key(num_1:, num_2:)
add = num_1 + num_2 //与えられた数字すべてを足して
remainder = add % 10 //10で割ったときの余りを戻り値として返す
end
end
$ bundle exec rspec
1 example, 0 failures
オールグリーン
リファクタリング
意味なし最終コード
lib/lpaiza_lebelD.rb
class Lebel_D
def initialize(num_1:, num_2:)
@add = num_1 + num_2
end
def key
remainder = @add % 10
end
end
spec/paiza_lebelD_spec.rb
require 'spec_helper'
RSpec.describe Lebel_D do
let(:number) { Lebel_D.new(num_1: 4, num_2: 8) }
it '荒れ果てた警察署' do
expect(number.key).to eq 2
end
end
rspec入門はこちらから
https://qiita.com/jnchito/items/42193d066bd61c740612
見てくれてありがとう!