【问题标题】:Rails 3: Why Rails tries to insert values to database when running a simple test?Rails 3:为什么 Rails 在运行简单测试时会尝试将值插入数据库?
【发布时间】:2011-03-10 06:08:36
【问题描述】:

我跑:

ruby -I test test/unit/job_test.rb

从我的应用程序根目录,我得到:

Loaded suite test/unit/job_test
Started
E
Finished in 2.046875 seconds.

1) Error:
   test_My_First_Test(JobTest):
   ActiveRecord::RecordNotUnique: Mysql2::Error: Duplicate entry '' 
   for key 'name':
   INSERT INTO `ac_buyers` (`created_at`, `updated_at`, `id`) VALUES 
   ('2011-03-10 06:04:06', '2011-03-10 06:04:06', 298486374)

这是怎么回事?

为什么 Rails 会尝试向数据库插入值?

这里是test/unit/job_test.rb

require 'test_helper'
class JobTest < ActiveSupport::TestCase
  test "My First Test" do
    assert false
  end
end

【问题讨论】:

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


    【解决方案1】:

    这似乎是 Rails 固定装置。查看 test/fixtures,您将看到 rails 生成的一些文件,这些文件用于为您的测试数据库播种,其中包含要测试的数据。当您运行测试时,rails 会将它们插入到您的测试数据库中。

    【讨论】:

    • 谢谢!事实上,默认的固定装置是空的,这会导致错误。
    • 在 Rails 4 中有类似的问题。在运行 rails g ... 后添加了约束,并且在测试时抛出错误。必须更新夹具以解决新的约束。
    猜你喜欢
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 2011-04-15
    相关资源
    最近更新 更多