【发布时间】:2020-06-17 19:16:57
【问题描述】:
在我的控制器中,我有以下代码:
def create
@post = Post.new(post_params)
if @post.save
flash[:notice] = "#{@post.title} was successfully created."
redirect_to post_path
else
flash[:alert] = @post.errors.full_messages
render :new
end
end
我已经设法编写 rspec 代码来涵盖功能规范中的真实陈述,但是我正在为虚假陈述而苦苦挣扎。到目前为止,这是我为解决我的问题而提出的 rspec(放置在 posts_controller_spec.rb 中):
it 'should return false and render the new template' do
allow_any_instance_of(Post).to receive(:valid?).and_return(false)
expect(response).to render_template(:new)
end
不幸的是,我遇到了以下错误:
Failures:
1) PostsController create should return
Failure/Error: expect(response).to render_template(:new)
expecting <"new"> but rendering with <[]>
我尝试查看有关 stackoverflow 的其他问题以及其他在线建议,但似乎无法弄清楚。
任何帮助将不胜感激:)
【问题讨论】:
-
为什么不直接发布无效参数?
-
看看
render_template匹配器如何在 RSpec 文档中指定路径:relishapp.com/rspec/rspec-rails/docs/matchers/…
标签: ruby-on-rails ruby rspec