Я не могу понять, почему этот RSpec
тест не пройден. Любой совет?
Я пытаюсь справиться с уничтожением поста. Только пользователи, которые создают сообщения, могут удалить их.
class PostsController < ApplicationController
before_filter :authorized_user, :only => :destroy
def destroy
post = Post.find(params[:id])
post.destroy
redirect_to posts_path, notice: 'Post successfully destroyed'
end
private
def authorized_user
redirect_to posts_path, notice: 'Access Denied' if current_user.posts.find_by_id(params[:id]).nil?
end
Тест:
describe "DELETE destroy" do
before(:each) do
@post = stub_model(Post, :id => 23)
@post.stub(:destroy){true}
Post.stub(:find){@post}
end
it "should search the post" do
Post.should_receive(:find).with(@post.id.to_s).and_return(@post)
delete :destroy, {:id => @post.id }
end
it "should destroy the post" do
@post.should_receive(:destroy)
delete :destroy, {:id => @post.id }
end
it "should redirect to the posts list" do
delete :destroy, {:id => @post.id }
response.should redirect_to posts_path
end
end
И ошибки:
1) PostsController DELETE destroy should search the post
Failure/Error: Post.should_receive(:find).with(@post.id.to_s).and_return(@post)
(<Post(id: integer, title: string, body: text, created_at: datetime, updated_at: datetime, user_id: integer) (class)>).find("23")
expected: 1 time
received: 0 times
# ./spec/controllers/posts_controller_spec.rb:67:in `block (3 levels) in <top (required)>'