当我通过“rake spec”运行它时,我的一个规范失败了,但是当我使用RSpec可执行文件“spec”时通过了。 当我在ActionMailer视图中使用url帮助程序时,规范失败。错误消息是:
auction_url failed to generate from {:action=>"show", :state=>"asd", :slug=>"asd", :controller=>"auctions"}, expected: {:action=>"show", :controller=>"auctions"}, diff: {:state=>"asd", :slug=>"asd"}
:state和:slug是url的必需属性。 路线看起来像这样:
map.auction ':state/:slug', :controller => 'auctions', :action => 'show'
我在环境文件中设置了在ActionMailer视图中使用url帮助程序所需的主机:
ActionMailer::Base.default_url_options[:host] = 'myhost.com'
可能是什么问题? 为什么“rake spec”与“spec spec”的行为有所不同? 使用其中一个时加载/未加载的任何东西?
答案 0 :(得分:1)
我意识到这有点老了,但无论如何 - 我只是碰到了同样的问题,而不是第一次。然后,当我开始将调试语句插入到失败的规范中以弄清楚发生了什么时 - rake spec再次工作。所以我怀疑当规范与rake有关时会发生某种缓存。如果再次发生这种情况,可以尝试运行
rake tmp:cache:clear
甚至
rake tmp:clear