FactoryGirl不会写数据

时间:2014-01-30 22:31:58

标签: ruby ruby-on-rails-4 factory-bot

我很困惑为什么会发生这种情况......

我正在使用工厂女孩和这家工厂:

# 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生成的。

这里发生了什么?

2 个答案:

答案 0 :(得分:1)

你有那张桌子的固定装置吗?如果存在并启用了fixture,Rails将在评估测试之前尝试将它们加载到数据库中。查看spec/fixtures

答案 1 :(得分:0)

您的设置似乎有误。检查FactoryGirl Rails gem。不要忘记将RSpec配置为使用FactoryGirl。