对于像我这样对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文件中有其他测试,测试同一模型中的其他方法没有问题。我搜遍了这个网站和其他资源,没有运气。任何方向或建设性的批评都将受到高度赞赏。
答案 0 :(得分:1)
我认为它是一个实例方法,所以你需要在该模型类的实例上调用它 默认情况下,rspec尝试在规范上运行它,因此抛出错误,因为rspec没有像auto_respond这样的方法。