通过迁移到Activerecord模型添加的测试行为



我想知道是否应该为ActiveRecord添加的行为和迁移到我的模型。

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

我应该写单元以检查created_at updated_at id是否存在?

我使用Rspec。

如果系统中的其他对象取决于生成的现有方法,则应该对其进行单位测试。如果您的系统中的默认和格式很重要,则应该对其进行测试。

期望(user.new).to recond_to(:create_at,:updated_at)

好吧,您绝对不想测试timestamps是否实际工作。那是Rails API的一部分。

您想测试什么?DB中存在created_atupdated_atid?您应该测试使用这些DB列的方法。

Rails称它们为单位测试,但"单元"是业务逻辑,再加上与DB的互动。例如,获取最近更新的User

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

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

简而言之:否。

最新更新