2

私のシステムのルートは次のとおりです。

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 をテストする方法を知っている人はいますか? どうもありがとう〜!!!!

4

0 に答える 0