대부분의 레일 애플 리케이션 레코드를 생성하고 업데이트하는 내용 블록의이 유형을 사용하는 내 RSpec에 테스트 내 routes.rb
::Application.routes.draw do
devise_for :users
root :to => "user#index"
resources :user
#match "newuser" => "user#new"
get "user/new"
post "user/create"
get "user/:id" => "user#show"
입니다 그리고 여기 .
def create
@user = User.new(params[:user])
if @user.save
redirect_to @user, :notice => "User was created successfully."
else
render :new
end
end
는 기본적으로
create
조치가 실행 될 때 새 레코드, 또는
User
모델의 새 인스턴스를 만듭니다.
.save
을 호출하면 모든 유효성 검사를 검사합니다. 검증이 성공하면 true를 반환하고 그렇지 않으면 false를 반환합니다.
false를 반환하면 :new
템플릿을 다시 렌더링해야 사용자가 모든 유효성 오류를 수정할 수 있습니다.
true를 반환하면 show
동작으로 리디렉션하고 싶습니다. 레일에 대한 멋진 점은 인스턴스 @user
을 전달하여 it can automatically figure that out이라는 것입니다.
라이언 베이츠 testing controllers with RSpec에 대한 자습서를 가지고있다. 그가하는 일에 따라, 이것은 내가 당신의 컨트롤러를 테스트하는 방법입니다.
require 'spec/spec_helper'
describe UserController do
describe "POST 'create'" do
it "should redirect to user on successful save" do
User.any_instance.stub(:valid?) { true }
post :user
flash[:notice].should_not be_nil
assigns(:user).should_not be_a_new_record
response.should redirect_to(assigns(:user))
end
it "should render new template on failed save" do
User.any_instance.stub(:valid?) { false }
post :user
flash[:notice].should be_nil
assigns(:user).should be_a_new_record
response.should render_template(:new)
end
it "should pass params" do
User.any_instance.stub(:valid?) { true }
post :user, :user => { email_address: "[email protected]" }
assigns(:user).email_address.should == "[email protected]"
end
end
end
.save가 실패하여 리디렉션되고 @ user.id의 값이 nil 인 경우에도 더 자세히 설명하면 표시되도록 리디렉션됩니다. – Unixmonkey
에 내가 무엇을 넣어야하는지? – Asantoya
내가 추천 한 내용을 넣었으나 이제이 오류가 발생합니다. 오류/오류 : 가져 오기 : 만들기, : 사용자 => {: 전자 메일 => '[email protected]', : name => 'userexample'} ActionView : : MissingTemplate : {: 처리기 => [: coffee, : haml, : 작성기 : erb], : 로케일 => [: en], : formats => [[: html] }. 검색된 곳 : – Asantoya