Ruby on Rails
Wednesday, May 23, 2012
Hi guys,
I'm starting to write tests and I writing a functional test for my 'create' action.
So, basically I have the following test:
describe '#create' do
@attributes = { title: 'New post', description: 'Please add some text here', location: 'Anywhere' }
context 'when logged in' do
login_user
before { post :create, @attributes }
it 'should create a new post' do
post = mock(Post, @attributes)
assigns(:post).should_not be_nil
Post.should_receive(:save).and_return(post)
response.should redirect_to successful_submitted_posts_path
end
it 'should NOT create a new post' do
end
end
context 'when NOT logged in' do
before { post :create, @attributes }
it { response.should_not be_successful }
it { response.should redirect_to new_user_session_path }
end
end
But it's failing and I don't get understand why.
1) PostsController#create when logged in should create a new post
Failure/Error: post = mock(Post, @attributes)
ArgumentError:
wrong number of arguments (3 for 2)
# ./spec/controllers/posts_controller_spec.rb:40:in `block (4 levels) in <top (required)>'
Finished in 0.77996 seconds
6 examples, 1 failure
why mock method expects 3 arguments? what they should be?
I have read on some blogs this kind of syntax.
mock(Object, hash)
And this is my controller:
# encoding: utf-8
class PostsController < ApplicationController
load_and_authorize_resource
before_filter :authenticate_user!
respond_to :html
def new
@post = Post.new
end
def create
@post = current_user.posts.build(params[:post])
if @post.save
redirect_to successful_submitted_posts_path
else
render :new
end
end
def successful_submitted; end
end
What I'm doing wrong?
Please give me some hints.
Thank you.
-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-talk/-/ouy4grWHNOwJ.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment