通过"rake spec"调用时RSpec规范失败,通过"spec spec"调用时传递

Man*_*rer 6 rake rspec ruby-on-rails

当我通过"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"}
Run Code Online (Sandbox Code Playgroud)

:state和:slug是url的必需属性.路线看起来像这样:

map.auction ':state/:slug', :controller => 'auctions', :action => 'show'
Run Code Online (Sandbox Code Playgroud)

我在环境文件中设置了在ActionMailer视图中使用url帮助程序所需的主机:

ActionMailer::Base.default_url_options[:host] = 'myhost.com'
Run Code Online (Sandbox Code Playgroud)

可能是什么问题呢?为什么"rake spec"与"spec spec"的行为有所不同?使用其中一个时加载/未加载的任何东西?

Thi*_*ilo 1

我意识到这有点老了,但无论如何 - 我刚刚遇到了同样的问题,也不是第一次了。然后,当我开始将调试语句插入失败的规范以找出发生了什么时 - rake 规范再次工作。所以我怀疑当规范涉及 rake 时会发生某种缓存。如果再次出现这种情况,也许可以尝试运行

rake tmp:cache:clear
Run Code Online (Sandbox Code Playgroud)

甚至

rake tmp:clear
Run Code Online (Sandbox Code Playgroud)