私のシステムのルートは次のとおりです。
user_show GET /user/show(.:format) user#show.
コントローラーのコードは次のとおりです。
def show
@user = User.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @user}
end
end
_spec.rb
describe 'GET #show' do
it 'should return success' do
get :show, id:@user.id
expect(response).to be_success
end
end
結果は次のとおりです。
失敗/エラー: expect(response).to be_success
予想通りの成功?true を返す、false を取得する
ブラウザで xxx/user/show と入力すると、エラーが発生します。
ActiveRecord::UserController#show の RecordNotFound
しかし、xxx/user/show?id=31 と入力すると、id=31 のユーザーが表示されます!!
@Alex Wayne に感謝します。ここにさらに情報を追加します。routes.rb ファイルを確認します。
get "user/show"
get "user/index"
get "user/delete"
get "user/edit"
post "user/update"
resource :users, :path => :user, :as => :user
個人的には、チームメイトがRails Routingに基づいて「get user/show, get user/index....」と書き留めるべきではないと思います。しかし、私は彼らのコードを変更することはできません。それで、 user/show?id=xxx をテストする方法を知っている人はいますか? どうもありがとう〜!!!!