这是我的控制器代码
def create
@post = Post.new(post_params)
if @post.save
redirect_to @post
else
render 'new'
end
end
和我的测试代码
test "should get create post" do
assert_difference('Post.count') do
post :create, post: {title: @post.title, content: @post.content}
end
assert_redirected_to post_path(assigns{:post})
end
我得到的错误是
ArgumentError:Array与Array的比较失败 test / controllers / posts_controller_test.rb:22:在`block in'
如果我删除(指定{:post})并尝试测试
我收到此错误
ActionController :: UrlGenerationError:没有路由匹配{:action =>" show",:controller =>" posts"}缺少必需的密钥:[:id] 另外如何测试if失败渲染' new'参与控制器。
由于
答案 0 :(得分:1)
在以下一行
assert_redirected_to post_path(assigns{:post})
使用括号而不是花括号。代码应如下所示:
assert_redirected_to post_path(assigns(:post))
答案 1 :(得分:0)
@post
未在测试中的任何位置实例化。你需要像这样传递参数
post :create, post: {title: 'title', content: 'content'}