我很困惑为什么会发生这种情况......
我正在使用工厂女孩和这家工厂:
# spec/factories/partners/contact.rb
FactoryGirl.define do
factory :partner_contact, class: Partners::Contact do
first_name "Josh"
last_name { Faker::Name.last_name }
email { Faker::Internet.email }
partner
end
end
但是当我运行我的rspec时,它说
Mysql2::Error: Field 'first_name' doesn't have a default value: INSERT INTO `partner_contact` (`created_on`) VALUES ('2014-01-30 22:21:53')
以下是我正在使用的规范会产生上述错误。
# spec/models/contact.rb
require 'spec_helper'
require 'pp'
describe Partners::Contact do
it "has a valid factory" do
partner = FactoryGirl.create(:partner_contact)
# partner.should be_valid
puts "MEOW MEOW"
end
it "is invalid without a firstname" do
# FactoryGirl.build(:partner_contact, first_name: nil).should_not be_valid
end
it "is invalid without a lastname" do
# FactoryGirl.build(:partner_contact, last_name: nil).should_not be_valid
end
it "is invalid without an email address" do
# FactoryGirl.build(:partner_contact, email: nil).should_not be_valid
end
#it "returns a contact's fullname as a string"
end
如您所见,它不会尝试提交我列出的任何数据,first_name,last_name或email。只是'created_on',它是通过rails生成的。
这里发生了什么?
答案 0 :(得分:1)
你有那张桌子的固定装置吗?如果存在并启用了fixture,Rails将在评估测试之前尝试将它们加载到数据库中。查看spec/fixtures
。
答案 1 :(得分:0)
您的设置似乎有误。检查FactoryGirl Rails gem。不要忘记将RSpec配置为使用FactoryGirl。