如何在RSpec测试用例中包含模型的方法

时间:2014-01-28 10:08:16

标签: ruby-on-rails rspec capybara

我正在用水豚写一些Rspec测试,作为其中的一部分,我需要一些模型方法。

我创建了我的模型:

class MyModel < ActiveRecord::Base
  def method_name
    #some stuff..
  end
end

现在,我想在我的Rspec测试用例中使用MyModel

我尝试在config.include Models中加入spec_helper.rb,但会抛出错误

Uninitialized constant Models

当我试图加入

include MyModel.new.method_name()

它抛出错误`include': wrong argument type nil (expected Module) (TypeError)

不包含任何模型类,它运行测试用例,但是我的测试用例没用。

这是我的Rspec测试用例

require 'spec_helper'
describe "State Agency Page" do
    let(:state_data) { FactoryGirl.build(:state_data) } 
    require 'mymodel.rb'
    before {visit state_modifier_path}

    it "should have breadcrumb", :js=>true do
        page.should have_css('.breadcrumb')
    end
end

请提供任何解决方案。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我不知道你的意思是“你的测试用例没用”,但你似乎误解了Ruby的include方法的作用。

使用Rails,或者使用带有RSpec的rspec-rails gem,当您引用相应的类常量(例如MyModel)时,您的类将被自动加载。因此通常不需要手动“加载”单个模型。只需确保您在规范的开头有require 'spec_helper'

至于您尝试使用include时遇到的错误,我建议您查找并阅读Ruby参考,以了解include方法的语义以及为什么您的每次尝试都失败了它的方式。