【问题标题】:NoMethodError: undefined method `env' for nil:NilClassNoMethodError:nil:NilClass 的未定义方法“env”
【发布时间】:2015-02-02 20:45:49
【问题描述】:

我正在为我的应用程序使用 Rails 测试,当我运行这个测试时

class ShowingQuizzesTest < ActionDispatch::IntegrationTest
    include Devise::TestHelpers
    setup { host! 'example.com' }
    test 'return quiz by id' do 
        instructor=Instructor.create(name:"same7", email:"abcdefg@eng.asu.edu.com", password:"123abc")
        sign_in instructor
        quiz = Quiz.create(name: 'Quiz1', subject: 'physics', duration: 10, no_of_MCQ: 5, no_of_rearrangeQ: 5) 
        current_instructor.quizzes << quiz
        get "api/quizzes/#{quiz.id}"
        assert_equal 200, response.status

        quiz_response = json(response.body)
        assert_equal quiz.name, quiz_response[:name]
    end
end     

出现此错误: 1) 错误: ShowingQuizzesTest#test_return_quiz_by_id: NoMethodError: nil:NilClass 的未定义方法 `env'

我正在测试的方法:

   def show
            current_instructor.quizzes.find(params[:id])
            render json: data:{:quiz => quiz}, status: 200
        end

【问题讨论】:

  • 你能把你正在测试的方法也贴出来
  • def create //quiz = Quiz.new(quiz_params) //if quiz.save //current_instructor.quizzes quiz}, info:{} }, status: 201 //else //render json: { success: false, data:{}, :info => quiz.errors }, status: 422 //end //end / /private //def quiz_params //params.require(:quiz).permit(:name, :subject, :duration, :no_of_MCQ, :no_of_rearrangeQ) //end
  • @Finks 再看看我更新的问题。

标签: ruby-on-rails testing devise


【解决方案1】:

你在 Rails 5 上吗?

看起来 Rails 5 弃用了包含测试助手的旧方法 - 因为 Rails 团队对集成测试的速度进行了显着改进。目前,所有控制器都在集成测试中进行测试 - Link

我在处理设计和测试时遇到了同样的错误。我可以通过从我的测试文件中注释掉# include Devise::Test::ControllerHelperstest_helpers.rb(如果你在那里继承你的测试助手)来消除错误。

【讨论】:

    猜你喜欢
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多