Rspec未定义模型方法测试失败

时间:2014-12-31 19:42:31

标签: ruby-on-rails methods rspec undefined

对于像我这样对Rspec测试并不陌生的人来说,这个答案可能是显而易见的。我只是想测试一个模型中定义的方法,但每次运行规范时它都会给我一个未定义的方法错误。以下是详细信息:

试图测试的模型方法:

def auto_respond(behaviors)
. . . 
end

我的spec / models / message_spec.rb测试此方法:

RSpec.describe Message, :type => :model do
describe "auto_respond(behaviors)" do
let!(:good_response) { create(:good_response) }
let!(:good_survey_behavior) { create(:good_survey) }
let!(:bad_survey_behavior) { create(:bad_survey) }

context "when customer responds with a 5" do
  it "should be a valid matching pattern" do
    expect(auto_respond(good_survey)).to be_truthy
  end
end
end
end

失败消息:

1) Message auto_respond(behaviors) when customer responses with a 5 should be a valid matching pattern
 Failure/Error: expect(auto_respond(good_survey)).to be_truthy
 NoMethodError:
   undefined method `auto_respond' for #<RSpec::ExampleGroups::Message::AutoRespondBehaviors::WhenCustomerResponsesWithA5:0x007fdb8a756738>
 # ./spec/models/message_spec.rb:44:in `block (4 levels) in <top (required)>'

我在同一个spec文件中有其他测试,测试同一模型中的其他方法没有问题。我搜遍了这个网站和其他资源,没有运气。任何方向或建设性的批评都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

我认为它是一个实例方法,所以你需要在该模型类的实例上调用它 默认情况下,rspec尝试在规范上运行它,因此抛出错误,因为rspec没有像auto_respond这样的方法。