Ruby on rails Rails 5上的唯一约束失败错误,使用Minitest
我对单元测试和Rails基本上是新手。我有一个简单的Rails应用程序,并尝试使用默认的Minitest和Capybara进行单元测试。不幸的是,它给了我这个错误,不管我累了测试什么Ruby on rails Rails 5上的唯一约束失败错误,使用Minitest,ruby-on-rails,ruby,sqlite,minitest,Ruby On Rails,Ruby,Sqlite,Minitest,我对单元测试和Rails基本上是新手。我有一个简单的Rails应用程序,并尝试使用默认的Minitest和Capybara进行单元测试。不幸的是,它给了我这个错误,不管我累了测试什么 E Error: StocksControllerTest#test_the_truth: ActiveRecord::RecordNotUnique: SQLite3::ConstraintException: UNIQUE constraint failed: admins.email: INSERT INT
E
Error:
StocksControllerTest#test_the_truth:
ActiveRecord::RecordNotUnique: SQLite3::ConstraintException: UNIQUE constraint failed: admins.email: INSERT INTO "admins" ("created_at", "updated_at", "id") VALUES ('2017-06-28 08:49:33.148641', '2017-06-28 08:49:33.148641', 298486374)
bin/rails test test/controllers/stocks_controller_test.rb:10
测试/控制器/库存控制器.rb
models/stock.rb
class Stock
models/admin.rb
class Admin
请记住,应用程序似乎运行得很好。我确实试图删除重置我的测试数据库,但没有帮助。非常感谢您的帮助。检查您的test/fixtures/admins.yml以获得重复的id字段。您知道吗?除了这个,我已经清理了所有的固定装置!非常感谢你!
require 'test_helper'
class StocksControllerTest < ActionDispatch::IntegrationTest
def setup
@base_title = "Stationery Management System"
end
test "the truth" do
assert true
end
end
ActiveRecord::Schema.define(version: 20170627120530) do
create_table "admins", force: :cascade do |t|
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", default: 0, null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["email"], name: "index_admins_on_email", unique: true
t.index ["reset_password_token"], name: "index_admins_on_reset_password_token", unique: true
end
create_table "stocks", force: :cascade do |t|
t.string "name"
t.text "description"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "admin_id"
t.index ["admin_id"], name: "index_stocks_on_admin_id"
end
end
class Stock < ApplicationRecord
belongs_to :admin
end
class Admin < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :stocks, dependent: :destroy
end