bundle exec guard15:12:01 - INFO - Run all
15:12:01 - INFO - Running all specs
..**..........................
Pending:
Book add some examples to (or delete) /Users/hamasyou/tmp/specbox/spec/models/book_spec.rb
# No reason given
# ./spec/models/book_spec.rb:4
BooksHelper add some examples to (or delete) /Users/hamasyou/tmp/specbox/spec/helpers/books_helper_spec.rb
# No reason given
# ./spec/helpers/books_helper_spec.rb:14
Finished in 0.18066 seconds
30 examples, 0 failures, 2 pending
Randomized with seed 14063
require'spec_helper'describe"Books"dodescribe"GET /books"doit"works! (now write some real specs)"do# Run the generator again with the --webrat flag if you want to use webrat methods/matchersgetbooks_pathresponse.status.shouldbe(200)endendend
API はインターフェース(入力パラメータ と 出力形式 )が大事なのでここをきっちり押さえておくテストを書く必要があります。
で、テストケースを変えると当然テストが失敗するので、テストが通るようにヘルパを書き換えます。
request_helpers.rb を作成する
request spec を書くときに便利なメソッドをいくつか用意しておきます。
RESTful API は出力を json で返すものが多いと思うので、json を扱いやすくするヘルパーを用意します。
また、 AuthenticationHelper は認証が必要な API を呼び出すときの便利メソッドとして記述してありますが、不要であれば削除、仕様が違うようであれば書きなおしてつかいます。
次のファイルを spec/support/request_helpers.rb として作成します。
spec/support/request_helpers.rb
123456789101112131415
moduleRequestsmoduleJsonHelpersdefjson@json||=JSON.parse(response.body)endendmoduleAuthenticationHelper%w(get post put delete).eachdo|method_name|define_method("auth_#{method_name}")do|uri,auth_user,params={},env={},&block|__send__(method_name,uri,params,env.reverse_merge(HTTP_AUTHORIZATION:"token #{auth_user.access_token}"),&block)endendendend