이제 users_controller.rb
에 대한 Rspec 테스트를하고 있습니다. 그러나 나는 다음과 같이 오류 NoMethodError: undefined method 'user_url'
에 오류가 있습니다. Rspec 사용자 컨트롤러 - NoMethodError : 정의되지 않은 메서드 'user_url'
users_controller.rb
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @user }
end
end
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
respond_to do |format|
if @user.update_attributes(params[:user])
format.html { redirect_to @user, notice: 'User was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "user#edit" }
format.json { render json: @idea.errors, status: :unprocessable_entity }
end
end
end
end
FF
Failures:
1) UsersController PUT update user update does not succeed
Failure/Error: put :update, {:id => user.to_param}, valid_session, :user_route => user
NoMethodError:
undefined method `user_url' for #<UsersController:0x52e40e0>
# ./app/controllers/users_controller.rb:21:in `block (2 levels) in update'
# ./app/controllers/users_controller.rb:18:in `update'
# ./spec/controllers/users_controller_spec.rb:64:in `block (3 levels) in <top (required)>'
2) UsersController PUT update user update succeeds
Failure/Error: put :update, {:id => user.to_param}, valid_session, :user_route => user
NoMethodError:
undefined method `user_url' for #<UsersController:0x53bc560>
# ./app/controllers/users_controller.rb:21:in `block (2 levels) in update'
# ./app/controllers/users_controller.rb:18:in `update'
# ./spec/controllers/users_controller_spec.rb:58:in `block (3 levels) in <top (required)>'
Finished in 0.679 seconds
2 examples, 2 failures
Failed examples:
rspec ./spec/controllers/users_controller_spec.rb:61 # UsersController PUT update user update does not succeed
rspec ./spec/controllers/users_controller_spec.rb:56 # UsersController PUT update user update succeeds
Randomized with seed 33412
또한 여기 내 RSpec에
users_controller_spec.rb
입니다. 나는 "POST update"에 대해 두 가지 테스트를했다. 하나는 성공적으로 업데이트됩니다. 다른 것은 업데이트되지 않는 것입니다. (후자에 대해서는, 나는 그 과정을 "다른"진행 있도록 "update_attribute"가 "false"를 반환 것으로 기대 스텁
User.stub(:update_attribute).and_return(false)
를 넣습니다.) 내가 이해 할 수 없기 때문에
require 'spec_helper'
describe UsersController do
let(:valid_attributes) { {
"email" => "[email protected]",
"password" => "12345678"
} }
def valid_session
{}
end
describe "PUT update" do
it "user update succeeds" do
user = User.create! valid_attributes
put :update, {:id => user.to_param}, valid_session
assigns(:user).should eq(user)
end
it "user update does not succeed" do
user = User.create! valid_attributes
User.stub(:update_attribute).and_return(false)
put :update, {:id => user.to_param}, valid_session
assigns(:user).should eq(user)
response.should render_template("edit")
end
end
end
내가,이 문제를 해결 할 생각이 없다 어디 user_url
왔어요. 그래서 당신의 도움을 받고 싶습니다.