Rspec (2.13.0) 要求仕様を使用して、モバイル サイトのログイン API をテストしています。テストデータベースにユーザーを正しく書き込み、dbにauth_tokenを生成するlogin_userメソッドがあります。
「モバイル ログイン ページのテストのみ」の例では、auth_token がセッション値として正しく設定されているとは思えません。ログイン後にリダイレクトが発生し、そのリダイレクトで正しい auth_token が送信されていることがわかります (login_user メソッドのコメントを参照)。
私の構文は間違っていますか (このような要求仕様を使用するのはこれが初めてです)? コントローラーの仕様を使用するか、ラックテストを使用する方がよいでしょうか?
thx事前に
def login_user
@user = FactoryGirl.create :user
visit '/arc/signin'
fill_in 'Email', with: 'jxt@jxt.com'
fill_in 'Password', with: 'foobar'
click_button 'Log in'
# from test.log showing that auth_token is actually called
# Processing by UsersController#home as HTML
# ESC[1mESC[35mUser Load (0.4ms)ESC[0m SELECT `users`.* FROM `users` WHERE `users`.`auth_token` = 'pCnpG90vIw3qUAoXx3EBsA' LIMIT 1
#
end
it "just testing the mobile-login-page" do
login_user
get '/arc/v1/api/signup-mobile-test'
puts response.body
JSON.parse(response.body)[:auth_token] == (@user.auth_token)
end
コントローラーで:
def create_user_test
m={}
m[:status]="success"
m[:auth_token]=session[:auth_token]
render :json => m.to_json
end
出力は次のとおりです。
Fri Apr 26$ rspec spec/requests/static_page_spec.rb
{"status":"success","auth_token":null}
.....
Finished in 0.80587 seconds
5 examples, 0 failures