block_given?

ジャングル ブロック ナイ アルノハ jump ダケ。CC-BY-SA 3.0

暇なとき、チャットでよおよお! ruboty-yo!!

f:id:block_given:20141101041727p:plain

つかいかた

よ usaboty/yo usabotyとかくとYoが飛ぶよ。

恋の病の人向けの使い方

君のこと好きだよ usabotyでもYoが飛ぶよ。Yoしか伝わらないから安心だよ。

テスト

yo.featureを書いた。

vcrはじめて使ったけどそれなりにべんりだった。use_cassetteのキーの指定の仕方と録音の仕方がキモだと思う。

今回は出来なかったけど

# こういう感じの`shared_context`を定義しておくと便利そう
RSpec.shared_context 'VCR', :vcr do
  around do |example|
    # metadataで指定する、あるいはfull_descriptionを使うとよさそう
    VCR.use_cassette(example.metadata[:cassette]) do
      example.run
    end
  end
end

RSpec.describe 'AKB48', :vcr, cassette: 'akb48' do
  # 〜
end

RSpec.describe 'perfume', :vcr, cassette: 'perfume' do
  # 〜
end

WebAPI

どこでstubするか。シナリオを通して投げるリクエストが決まっているならvcr便利だと思う。 ざっとみた感じ録音したデータには秘密にしておかないとまずいデータも録音されてしまう。 今回は別途Rakefileにタスクを定義して、漏れるとまずそうな部分をマスクしてからコミットした。

APIのクライアントライブラリ

今回はライブラリをつかわず適当に実装した。最低限ひつYoなエンドポイントだけたたける。 自分で作るか、ライブラリ使うかでテストのやりかたが違ってきそう。

ハマったところ

  • api tokenを間違えてなかなかYoできなかった。
  • 無効なapi tokenを送った場合のエラーメッセージから「api tokenが違う」ことが読み取れなかった。

まとめ

Yoではつたわらないこともあるよ