Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 什么是';有效?';在RSpec?我在哪里可以看?_Ruby_Validation_Rspec - Fatal编程技术网

Ruby 什么是';有效?';在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

我试图创建一个模型,它需要通过RSpec中的一系列验证测试。然而,我不断地犯错误

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的类。我已将其添加到问题中。请重新阅读错误:“预期#响应
有效?
”它并不是说您的答案无效,而是说缺少
有效?
方法。