Skip to content

Instantly share code, notes, and snippets.

@tatsuosakurai
Last active June 4, 2019 04:16
Show Gist options
  • Save tatsuosakurai/113200c99694ad129ec7d1d6657226c9 to your computer and use it in GitHub Desktop.
Save tatsuosakurai/113200c99694ad129ec7d1d6657226c9 to your computer and use it in GitHub Desktop.
RSpec 始めの一歩

RSpec を使ってみよう ver.20190319

  • ペアでやってる方は、随時、気になってること、気づいたことをお話してください:)
  • $ はコマンドラインでの実行を表現しているだけなので、打たなくでOKです:)
  • rspec https://github.com/rspec/

1歩目

rspec-bird ディレクトリ作成してみる

$ mkdir rspec-bird
$ cd rspec-bird

git を使えるようにしてみる

$ git init

メモ

※ キリのいいところで git commit しましょう:)

RSpec の準備 (インストールして init) してみる

$ gem i rspec
$ rspec --init
$ git add .
$ git commit -m 'rspec --init'

メモ

  • どんなファイルがインストールされましたか?
  • ※ commit してますか?
  • どんなファイルが作られました?
  • 他に気になることはありますか(?_?)

Bird クラスを作ってみる

  • rspec-bird/bird.rb
class Bird
  def tweet
    '\_o< hi!'
  end
end

メモ

  • ※ commit してますか?
  • 今実装した tweet はクラスメソッドですか?インスタンスメソッドですか?
  • 他に気になることはありますか(?_?)

irb で Bird クラスを使ってみる

  • rspec-bird ディレクトリ直下で実行
$ irb
irb(main):001:0> require './bird'
=> true
irb(main):002:0> Bird.new.tweet
=> "\\_o< hi!"

メモ

  • ※ commit してますか?
  • 今実装した tweet はクラスメソッドですか?インスタンスメソッドですか?
  • 他に気になることはありますか(?_?)

specファイル(bird_spec.rb)を作ってみる

  • rspec-bird/spec/bird_spec.rb
require './bird'

RSpec.describe Bird do
  describe '#tweet' do
    it '\_o< hi!が表示される' do
      bird = Bird.new
      expect(bird.tweet).to eq('\_o< hi!')
    end
  end
end

メモ

  • ※ commit してますか?
  • #tweet と書いてるのはどういう意味でしょうか?
  • 他に気になることはありますか(?_?)

spec を実行してみる

  • rspec-bird ディレクトリ直下で実行
$ rspec spec/bird_spec.rb

メモ

  • ※ commit してますか?
  • #tweet と書いてるのはどういう意味でしょうか?
  • greenになったら(specが通ったら)、red(specが通らない状態)になるか確認してみましょう
    • どうするとspecが通らないようになると思いますか?
  • 他に気になることはありますか(?_?)

2歩目

Birdからビームを出したい

  • \_o< ===== が表示されるようにしたい
  • specから書いてもいいし、実装から書いてもいい

毎回 \_o< を書きたくないので共通化したい

  • tweet でも \_o< があるし、ビーム出すメソッドでも \_o< があるので、共通化したい
  • (テストはそのままでいいはず?)
  • 他に気になることはありますか(?_?)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment