我正在尝试做一些相当简单的事情 - 在模型测试中添加一个带有辅助方法的模块,但我不断收到以下错误
未初始化的常量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这样做不起作用。任何人都知道为什么这种方法在模型中不起作用?
答案 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可以消除此错误,并且该规范按预期运行。
我知道这是一个简单的问题,但是如果您有成百上千个规格文件,则可能不会一直查看文件名。