Rspec 集成测试:路由不可用
我试图编写一个集成测试,如果我的控制器对已删除的文章(仅标记为已删除)引发 ActiveRecord::RecordNotFound 异常:
it "should return 404 for deleted articles" do
@article = Factory :article, :status => "deleted"
expect { get edit_article_path(:id => @article.id) }.to raise_error(ActiveRecord::RecordNotFound)
end
这些类型的测试在控制器规范中工作正常,但在规范/请求内我收到此错误:
expected ActiveRecord::RecordNotFound, got #<ActionController::RoutingError: No route matches {:action=>"edit", :controller=>"articles", :id=>595}>
因此它正确查找我的路线(因为它知道控制器等),但仍然引发错误。这是为什么?
谢谢,约翰内斯
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果此测试位于您的
spec/controllers
目录中,那么您调用的get
方法不需要路径,它需要您想要的控制器操作的符号打电话。因此,您需要将expect
行更改为:看看 RSpec 控制器规范文档 了解更多信息。
If this test is in your
spec/controllers
directory, then theget
method you're calling isn't expecting a path, it's expecting a symbol for the controller action you want to call. So you'd need to change theexpect
line to something like:Take a look at the RSpec Controller Spec documentation for more info.