将辅助模块添加到模型测试时未初始化的常量

时间:2017-01-04 01:58:49

标签: ruby-on-rails testing activesupport

我正在尝试做一些相当简单的事情 - 在模型测试中添加一个带有辅助方法的模块,但我不断收到以下错误

  

未初始化的常量NeighborhoodTest :: NeighboorhoodTestHelper

该模块位于 test / helpers / neighborhood_test_helper.rb

module NeighborhoodTestHelper

  def create_polygon
    points = self.geolocate
    boundary = Geokit::Polygon.new(points)
  end
   .
   .
end

根据this SO回答中的建议,在 test / models / neighborhood_test.rb 中执行了以下操作:

require 'test_helper'
require 'helpers/neighborhood_test_helper'


class NeighborhoodTest < ActiveSupport::TestCase
  include NeighboorhoodTestHelper

  def setup
    @crime = crimes(:arrest)
    @neighborhood = neighborhoods(:one)
  end

   test "neighborhood should contain crime" do
     neighborhood_boundary = @neighborhood.create_polygon
     crime_location = @crime.geolocate
     assert neighborhood_boundary.contains?(crime_location)
   end
end

我也试过this这样做不起作用。任何人都知道为什么这种方法在模型中不起作用?

2 个答案:

答案 0 :(得分:0)

<强>测试/ some_helper.rb

module SomeHelper
  def method1
    -----------
    -----------
  end

  def method2
    -----------
    -----------
  end
end

<强>测试/ test_helper.rb中

require some_helper.rb

您现在可以在任何测试用例中访问method1和method2。希望它可以帮到你。

答案 1 :(得分:0)

我今天在rspec 3.8上遇到了这个问题,并且在其他辅助测试也能正常工作的情况下,我很想知道是什么使这一规范如此特别。

就我而言,无论出于何种原因,结果证明给规范文件名提供了与帮助程序模块本身相同的文件名。尝试加载常量时,它正在查看规范文件,因为它已代替了“ my_helper”,而忽略了实际模块。在规范文件名的末尾添加_spec可以消除此错误,并且该规范按预期运行。

我知道这是一个简单的问题,但是如果您有成百上千个规格文件,则可能不会一直查看文件名。