使用Rails和Rspec的'undefined method'帖子

Dar*_*Sun 1 ruby rspec ruby-on-rails factory-bot

坚持:

' undefined method `post' for #<Class:0x000001058c0f68> (NoMethodError)'
Run Code Online (Sandbox Code Playgroud)

关于测试控制器create动作.

我正在使用Rails 4,rpsec和Factory Girl

控制器:

def create
  @post = Post.new(post_params)
  @post.user_id = current_user.id

  if @post.save
    flash[:success] = "Yay! Post created!"
    redirect_to root_path
  else
    # flash[:error] = @post.errors.full_messages
    render 'new'
  end
end
Run Code Online (Sandbox Code Playgroud)

测试:

describe '#create' do
  post 'create',  FactoryGirl.attributes_for(:post, user: @user)
  response.should be_successful
end
Run Code Online (Sandbox Code Playgroud)

Mar*_*pka 5

我认为方法块中post可以访问it方法:

describe 'create' do
  it 'should be successful' do
    post :create, FactoryGirl.attributes_for(:post, user: @user)
    response.should be_success
  end
end
Run Code Online (Sandbox Code Playgroud)

顺便说一下,我认为你需要测试重定向,而不是success状态.