Ruby 什么是';有效?';在RSpec?我在哪里可以看?
我试图创建一个模型,它需要通过RSpec中的一系列验证测试。然而,我不断地犯错误Ruby 什么是';有效?';在RSpec?我在哪里可以看?,ruby,validation,rspec,Ruby,Validation,Rspec,我试图创建一个模型,它需要通过RSpec中的一系列验证测试。然而,我不断地犯错误 expected #<Surveyor::Answer:0x0055db58e29260 @question=#<Double Surveyor::Question>, @value=5> to respond to `valid?` 还有课堂提问 module Surveyor class Question attr_accessor :title, :type d
expected #<Surveyor::Answer:0x0055db58e29260 @question=#<Double Surveyor::Question>, @value=5> to respond to `valid?`
还有课堂提问
module Surveyor
class Question
attr_accessor :title, :type
def initialize(params)
@title = params.fetch(:title, nil)
@type = params.fetch(:type)
end
end
end
这就是我试图通过的测试
RSpec.describe Surveyor::Answer, '03: Answer validations' do
let(:question) { double(Surveyor::Question, type: 'rating') }
context "question validation" do
context "when the answer has a question" do
subject { described_class.new(question: question, value: 5) }
it { should be_valid }
end
end
我对“有效”的理解正确吗?我能看一下“有效”吗?也许能看出我错在哪里了?RSpec实际上没有一个名为
be\u valid
的匹配器,而是有一些动态:
对于任何谓词方法,RSpec都会提供相应的匹配器。只需在
使用be
方法并删除问号。示例:
expect(7).not_to be_zero # calls 7.zero?
expect([]).to be_empty # calls [].empty?
expect(x).to be_multiple_of(3) # calls x.multiple_of?(3)
因此,通过调用
it{should'u valid}
,主体必须响应valid?
方法。如果您正在测试一个ActiveRecord
模型,那么这些模型有一个valid?
方法,但您的模型没有。因此,如果您想测试您的答案是否有效,您需要确定“什么是有效答案?”并编写一个检查这些条件的方法。如果您想要一个类似于Rails模型的API,您可能有兴趣使用RSpec实际上没有名为be\u valid
的匹配器,相反,它有一些动态:
对于任何谓词方法,RSpec都会提供相应的匹配器。只需在
使用be
方法并删除问号。示例:
expect(7).not_to be_zero # calls 7.zero?
expect([]).to be_empty # calls [].empty?
expect(x).to be_multiple_of(3) # calls x.multiple_of?(3)
因此,通过调用it{should'u valid}
,主体必须响应valid?
方法。如果您正在测试一个ActiveRecord
模型,那么这些模型有一个valid?
方法,但您的模型没有。因此,如果您想测试您的答案是否有效,您需要确定“什么是有效答案?”并编写一个检查这些条件的方法。如果您想要一个类似于Rails模型的API,您可能会有兴趣使用,而不查看产生错误的代码。您最好询问算命师。您正在模拟不存在的类explorer::Question
,而现有类名为explorer::Answer
。我有一个类名为Question。我已将其添加到问题中。请重新阅读错误:“预期#响应有效?
”它并不是说您的答案无效,而是说它缺少一个有效?
方法。如果看不到产生错误的代码,您最好问算命师。您是在嘲笑不存在的类测量师::问题,当退出的类被命名为Surveyor::Answer
时,我有一个名为Question的类。我已将其添加到问题中。请重新阅读错误:“预期#响应有效?
”它并不是说您的答案无效,而是说缺少有效?
方法。