首页 > 解决方案 > SystemStackError:测试我的rails api answer_controllers时堆栈级别太深

问题描述

当我rspec在本地终端上运行以测试我的answer_controllers. 我已经检查了这个平台内外的相关问题,但没有一个能解决我的问题。

测试失败:

Failures:

  1) Answers shows all answers
     Failure/Error: @answers = current_user.answers
     
     SystemStackError:
       stack level too deep
      ./app/controllers/answers_controller.rb:6:in `index'
      ./spec/requests/answers_spec.rb:14:in `block (2 levels) in <main>'
      ./spec/rails_helper.rb:57:in `block (3 levels) in <top (required)>'
      ./spec/rails_helper.rb:56:in `block (2 levels) in <top (required)>'

  2) Answers displays answer information
     Failure/Error: @answers = current_user.answers
     
     SystemStackError:
       stack level too deep
      ./app/controllers/answers_controller.rb:6:in `index'
      ./spec/requests/answers_spec.rb:19:in `block (2 levels) in <main>'
      ./spec/rails_helper.rb:57:in `block (3 levels) in <top (required)>'
      ./spec/rails_helper.rb:56:in `block (2 levels) in <top (required)>'

require 'rails_helper'

RSpec.describe 'Answers', type: :request do
  before(:example) do
    @user = User.create(username: 'test_user', password: '1234')
    @answer = Answer.create(answer: 'the definition of sandwich is 
    two or more slices of bread or a split
     roll having a filling in between', question_id: 1, user_id: 1)
    token = JWT.encode({ user_id: @user.id }, Rails.application.secret_key_base)
    @headers = { Authorization: "Bearer #{token}" }
  end

  it 'shows all answers' do
    get '/api/v1/answers', headers: @headers
    expect(response).to have_http_status(:ok)
  end

  it 'displays answer information' do
    get "/api/v1/answers/#{@answer.id}", headers: @headers
    expect(response).to have_http_status(:ok)
  end
end

请我需要有关如何解决此问题的信息或提示...

标签: ruby-on-railsrubyrspec-railsrails-api

解决方案


推荐阅读