使用机械师而不是固定装置

时间:2010-12-09 12:30:47

标签: unit-testing ruby-on-rails-3 fixtures machinist

在我的 Rails 3 应用程序中,我有一个带有以下字段的用户模型

   name: string
   email: string
   children: has_many association to another model

我正在使用machinist 2生成模拟数据,其蓝图看起来像

User.blueprint do
   name { 'user{sn}' }
   email { '{object.name}@domain.com' }
end

用户的单元测试

require 'test_helper'

class UserTest < ActiveSupport::TestCase
  should have_many( :children )
  should validate_uniqueness_of( :email )
  should_not allow_value("blah").for(:email)
  should_not allow_value("b lah").for(:email)
  should allow_value("a@b.com").for(:email)
  should allow_value("asdf@asdf.com").for(:email)
end

当我生成用户模型时,它创建了一个fixture文件。我的理解是,当我运行rake时,Rails使用该fixture文件生成测试中使用的对象。这不是我想要的。 我希望Rails在使用fixtures文件时无缝地使用机械师的蓝图

有办法做到这一点吗?有没有办法告诉rails它需要使用蓝图而不是灯具?

1 个答案:

答案 0 :(得分:4)

将此添加到config / application.rb:

config.generators do |g|
  g.fixture_replacement :machinist
end

你也可以安全地删除旧的灯具文件夹,除非你想要明显地保留它们!