【问题标题】:Rspec - Syntax errors while testing users controlerRspec - 测试用户控制器时的语法错误
【发布时间】:2016-11-19 17:52:24
【问题描述】:

我在使用 rspec 和设计测试用户身份验证时遇到问题。

这是我的代码:

require 'rails_helper'

describe UsersController, :type => :controller do

  let(:user) { User.create!(email: '1@test.com', password: '123456') }

  describe 'GET #show' do

    context 'User is logged in' do
      before 
        sign_in user
        get :show 
      end

      it "loads correct user details" do
        expect(assigns(:user)).to eq user
      end

    end

    context 'No user is logged in' do
      it 'redirects to login' do
        get :show, id: user.id
        expect(response).to redirect_to(root_path)
      end
    end
  end

end

当我在终端上运行 rspec 时出现此错误:

/Users/joao1/.rvm/gems/ruby-2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:287:in `load': /Users/joao1/Desktop/nameofapp/spec/controllers/users_controller_spec.rb:29: syntax error, unexpected keyword_end, expecting end-of-input (SyntaxError)
    from /Users/joao1/.rvm/gems/ruby-2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:287:in `block in load'
    from /Users/joao1/.rvm/gems/ruby-2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:259:in `load_dependency'
    from /Users/joao1/.rvm/gems/ruby-2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:287:in `load'
    from /Users/joao1/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1435:in `block in load_spec_files'
    from /Users/joao1/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1433:in `each'
    from /Users/joao1/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1433:in `load_spec_files'
    from /Users/joao1/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:100:in `setup'
    from /Users/joao1/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:86:in `run'
    from /Users/joao1/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:71:in `run'
    from /Users/joao1/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:45:in `invoke'
    from /Users/joao1/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/exe/rspec:4:in `<top (required)>'
    from /Users/joao1/.rvm/gems/ruby-2.3.0/bin/rspec:23:in `load'
    from /Users/joao1/.rvm/gems/ruby-2.3.0/bin/rspec:23:in `<main>'
    from /Users/joao1/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `eval'
    from /Users/joao1/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `<main>'

我该如何解决这个问题并有效地测试我的用户身份验证?

【问题讨论】:

    标签: ruby-on-rails rspec devise


    【解决方案1】:

    错误消息是由于程序中的拼写错误导致的,它与 do end 块不匹配。仔细观察,我发现您缺少 before 块中的 do 语句。改成:

     before do
       sign_in user
       get :show 
     end
    

    【讨论】:

    • 谢谢大卫,就是这样。
    • 我的代码失败了,但至少测试运行了。非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    相关资源
    最近更新 更多