首页 > 解决方案 > 无法在测试环境 Rails 中访问继承的方法

问题描述

我正在尝试编写一个测试来检查我的应用程序中的用户流。为此,我需要测试一个名为is_applein 的方法AppleController,AppleController 继承自FruitsController. 我在 FruitsController 中有一个名为的方法taste,可以在AppleController's is_apple方法内部使用。输出与开发和生产环境中的预期相同。但是在测试环境中,来自 FruitsController 的方法在 AppleController 中是未定义的。我是 Rails 测试的新手,我不知道在我的应用程序测试环境中可能导致此问题的原因是什么。

test_helper.rb

ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'

class ActiveSupport::TestCase
  def setup
    puts "starting a test"
    post "v1/is_apple", params: {colour: 'red', taste: 'sweet'} 
  end
end

apple_controller.rb

module V1
  class AppleController < FruitsController
    def is_apple
      return true if taste and params[:colour].eql?('red')
    end
  end
end

水果控制器.rb

module V1
  class FruitsController < ActionController::API
    def taste
      # assume
      return true
    end
  end
end

我正在使用 minitest '5.10.3' 和 rails 6。当我运行 rails test 时,在 AppleController 中得到 undefined_method 'taste'。我的代码有错误吗?,如果是,我怎样才能实现我想要的行为。提前致谢!

标签: ruby-on-railsrubyintegration-testingminitest

解决方案


推荐阅读