这个方法在Ruby on Rails中不起作用

时间:2014-08-01 13:25:57

标签: ruby-on-rails rspec

我使用ActiveRecord-table构建一个类作为数据源,里面有46个项目 我不明白这里的问题,似乎我无法在新数组中提取项目?

这是我的Rspec结果:

故障:

  1) TrainSearch :rows has 46 items
     Failure/Error: expect(checker.data).to eq(46)

       expected: 46
            got: #<ActiveRecord::Relation []>

       (compared using ==)

这是我的代码:

class TrainSearch

    attr_reader :data

    def initialize
      @data = Timetable.all
    end

    def rows
      @rows ||= @data.map {|row| Row.new(row)}
    end
end

这是我的代码: file

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

Baloo在评论中指出的情况几乎就是这样。您的错误消息明确告诉您它的比较。

在没有看到代码本身的情况下,解释起来有点困难但是这里有。

您正在查询数据库中的某些记录(行?)并期望其中有46条记录。 您的查询返回ActiveRecord关系(所有行的数组)。要弄清楚你需要做多少行:

checker.data.count

您似乎还有另一个错误,我无法从给定的信息中追踪。您的查询返回一个空数组,以便计数将为0并仍然会失败。