测试迁移添加到ActiveRecord模型的行为

时间:2014-02-01 10:13:27

标签: ruby-on-rails ruby rspec

我想知道我是否应该将单元测试编写为ActiveRecord添加的行为以及迁移到我的模型。

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.timestamps
    end
  end
end

我是否应该编写单位来检查created_at updated_at id是否存在?

我使用RSpec。

2 个答案:

答案 0 :(得分:0)

如果系统中的其他对象依赖于现有生成的方法,则应该对现有对象进行单元测试。 如果系统中的默认值和格式设置很重要,那么也应对其进行测试。

expect(User.new).to respond_to(:created_at, :updated_at)

答案 1 :(得分:0)

好吧,你肯定不想测试timestamps是否真的有效。这是Rails API的一部分。

你真的要测试什么?数据库中是否存在created_atupdated_atid?您应该测试使用这些DB列的方法。

Rails称它们为单元测试,但“单元”是业务逻辑,与数据库交互。例如,获取最近更新的User

class User
  def self.most_recently_updated_user
    order("updated_at DESC").first
  end
end

此测试取决于现有的updated_at字段。

简而言之:不。