我尝试用Travis CI测试我的Rails应用程序,并在控制器测试中得到了以下错误:
DaysController
GET 'index'
An error occurred in an after hook
NoMethodError: undefined method `original_path_set' for nil:NilClass
occurred at /home/travis/build/violarium/ruby-moon/vendor/bundle/ruby/2.1.0/gems/rspec-rails-2.14.2/lib/rspec/rails/view_rendering.rb:121:in `block (2 levels) in <module:ViewRendering>'问题是,相同的测试在本地成功通过。
在本例中,DaysController是一个简单的控制器,带有一些身份验证方法的模块:
module UserSession
extend ActiveSupport::Concern
private
# Sign in existent user
def sign_in(user)
cookies.permanent[:remember_token] = user.remember_token
end
# Clear cookies
def sign_out
cookies[:remember_token] = nil
end
# Get current signed in user or nil
def signed_in_user
@current_user ||= User.find_by(remember_token: cookies[:remember_token])
end
# Check if user is signed in
def signed_in?
!signed_in_user.nil?
end
included do
helper_method :signed_in?
end
end发布于 2014-04-16 19:31:34
我不确定这是什么原因,但当我添加字符串时,问题就消失了:
cp config/travis/secrets.yml config/secrets.yml这是新的rails 4.1存储秘密的方法。
发布于 2014-04-16 12:10:16
实际上,这可能是capybara/rspec-rails中的一个bug,尝试升级到最新的rails和capybara。
有关更多详细信息,请参阅https://github.com/rspec/rspec-rails/issues/860。
https://stackoverflow.com/questions/23093279
复制相似问题