後にテンプレートをチェックし、私のユーザーのためのアクションを作成します:RSpecのは、ここでは、リダイレクト
def create
@user = User.new(user_params)
if @user.save
respond_to do |format|
format.html {
redirect_to edit_admin_user_path(@user)
flash[:success] = "Successfully created"
}
end
else
render :new
flash[:alert] = "Something went wrong"
end
end
私のテストはこのように見ている
:
:私はこのエラーを取得していますがcontext "POST methods" do
describe "#create" do
it "renders the edit template" do
post :create, user: FactoryGirl.attributes_for(:user)
expect(response).to render_template(:edit)
end
end
end
ユーザーの作成後にedit.html.hamlファイルがレンダリングされているかどうかを確認します。私は間違って何をしていますか?私は別のテストにリダイレクトするためにチェックします
アップデート#1 が、これは私の完全なテストスイートである:私が欲しいもの
require 'rails_helper'
RSpec.describe Admin::UsersController, type: :controller do
render_views
context "POST methods" do
describe "#create" do
it "using valid params" do
expect{
post :create, user: { email: "[email protected]", password: "long12345678" }
}.to change(User, :count).by(1)
# get user_path('1')
end
it "redirects to the edit page after saving" do
post :create, user: FactoryGirl.attributes_for(:user)
user = User.last
expect(response).to redirect_to(edit_admin_user_path(user.id))
end
it "renders the edit template" do
post :create, user: FactoryGirl.attributes_for(:user)
user = User.last
expect {
redirect_to(edit_admin_user_path(user.id))
}.to render_template(:edit)
end
context "it redirects to new" do
it "if user has no valid mail" do
post :create, user: { email: "something", password: "long12345678" }
expect(response).to render_template(:new)
end
it "if user has no valid password" do
post :create, user: { email: "[email protected]", password: "short" }
expect(response).to render_template(:new)
end
end
end
end
end
は編集テンプレートがレンダリングされている場合、実際に確認することです。 expect(response).to redirect_to(edit_admin_user_path(user))
の場合はではないので、のテンプレートをチェックしてください。 edit.html.hamlファイルがまったくなくてもこのテストに合格します。
その* edit.html.haml *が存在することを確認するには、 'edit'アクションではなく、' create'アクションのテストを記述する必要があります。 –