阅读本文: "No route matches" error?
我正在试图弄清楚是否有一个宝石或方法来修补动作包来解决这个约束。
基本上,我正在编写规范(它们运行速度很快),我不明白为什么actionpack在应用于未“保存”的对象时会抛出此错误。
有两个原因:
这种约束使编写快速测试变得很痛苦,除非我遗漏了某些东西......
答案 0 :(得分:1)
是的,错误信息有点模糊。关于第二点,您不需要保存对象来生成URL,帮助程序也可以使用文字值。
building_path(1) # GET /buildings/1 => BuildingsController#show, params={:id=>"1"}
因此在示例中,对象可以替换为任何值:
get :show, :id => "1"
例如,如果您使用rails generate scaffold Article
,RSpec将构建如下规范:
def mock_article(stubs={})
(@mock_article ||= mock_model(Article).as_null_object).tap do |article|
article.stub(stubs) unless stubs.empty?
end
end
describe "GET show" do
it "assigns the requested article as @article" do
Article.stub(:find).with("37") { mock_article }
get :show, :id => "37"
assigns(:article).should be(mock_article)
end
end
没有命中数据库。