简体   繁体   English

该网站运行正常,但是当我运行“ bundle exec rake test”时出现错误

[英]The site is working perfect but I've got an error when I run “bundle exec rake test”

I've already added my app a support button for microposts and if the user supports the micropost the button changes to "Not Support". 我已经为我的应用程序添加了微博支持按钮,如果用户支持微博,则该按钮将变为“不支持”。 Everything is working perfect in localhost but when I run "bundle exec rake test", I have an error. 一切都在localhost上运行良好,但是当我运行“ bundle exec rake test”时,出现错误。

Error 错误

 $ bundle exec rake test
  1) Error:
   UsersProfileTest#test_profile_display:
   ActionView::Template::Error: undefined method `supports' for nil:NilClass
app/views/shared/_support_form.html.erb:1:in `_app_views_shared__support_form_html_erb__582342844135452036_70190475648520'
app/views/microposts/_micropost.html.erb:21:in `_app_views_microposts__micropost_html_erb___1173022564425897832_70190475500520'
app/views/users/show.html.erb:19:in `_app_views_users_show_html_erb__2940108544736749993_70190457308940'
test/integration/users_profile_test.rb:14:in `block in <class:UsersProfileTest>'

 78 runs, 286 assertions, 0 failures, 1 errors, 0 skips

_support_form.html.erb _support_form.html.erb

<% if support = current_user.supports.find_by_micropost_id(micropost.id) %>
   <% micropost.supports.each do |support| %>
     <% if current_user?(support.user) %>
      <button class="btn" type="submit">
        <%= link_to "Not Support", [support.micropost, support], method: :delete %>
      </button>
    <% end %>
   <% end %>
<% else %>
    <%= form_for ([micropost, @support]) do |f| %>
      <%= render 'shared/error_messages', object: f.object %>
        <%= f.hidden_field :micropost_id %>
        <%= f.hidden_field :user_id %>

    <button class="btn" type="submit">
       Support
    </button>
   <% end %>
<% end %>

_micropost.html.erb _micropost.html.erb

 <%= render 'shared/support_form', micropost: micropost %>

supports_controller.rb supports_controller.rb

 def create
  @support = Support.new(micropost_id: params[:micropost_id], user: current_user)
  if @support.save
   redirect_to request.referrer || root_url
  else
    redirect_to request.referrer || root_url
  end
 end

 def destroy
    @support.destroy
    redirect_to request.referrer || root_url
 end

You do hot have authenticated user in tests by default, so current_user return nil . 默认情况下,您确实在测试中拥有经过身份验证的用户,所以current_user返回nil Same error may happen in production, if user somehow visits that page without logging-in before. 如果用户不经登录就以某种方式访问​​该页面,则在生产中可能会发生相同的错误。

If you are using devise for auth - see devise wiki on test helper 如果您使用devise进行身份验证-请参阅测试助手上的devise Wiki

class SomeControllerTest < ActionController::TestCase
  include Devise::TestHelpers

  def setup
    @request.env["devise.mapping"] = Devise.mappings[:user]
    sign_in FactoryGirl.create(:user) # or other method of making/getting test user
  end
end

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 该站点运行正常,但是运行“捆绑程序执行度测试”时出现错误-2 - The site is working perfect but I've got an error when I run “bundle exec rake test” -2 运行时遇到错误cmd RAILS_ENV =生产包exec rake资产:预编译 - got error when run cmd RAILS_ENV=production bundle exec rake assets:precompile 在终端中运行bundle exec时出错 - Error when I run bundle exec in terminal 当我运行`bundle exec rake test:prepare`时它出错了,但是`bundle exec rake db:test:prepare`会很好地发出警告。 这是怎么回事? - When I ran `bundle exec rake test:prepare` it errored out, but `bundle exec rake db:test:prepare` goes through fine with warning. What's going on? 捆绑exec rake测试投掷错误 - bundle exec rake test throwing error 由bundle exec修复的Rake错误,但部署不起作用 - Rake error fixed by bundle exec, but deployment not working 我无法在 Rails 3.0 中运行 rake db:migrate 或 bundle exec rake db:migrate - I am not able to run rake db:migrate or bundle exec rake db:migrate in Rails 3.0 在Ruby on Rails中运行rake测试时出错 - Error when I run rake test in Ruby on Rails 运行bundle exec rake test时出现rackspace / mock_data错误 - rackspace/mock_data error when running bundle exec rake test 捆绑件执行佣金耙路线不起作用 - bundle exec rake routes is not working
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM