1

我一直在构建我的应用程序,现在可以开始测试了。我在seeds.rb 中定义了Factory girl,但是当我运行测试时,我还在Rspec 的常用位置定义了测试/spec/factories.rb

但是我的第一次测试失败并出现以下错误。

user_spec.rb

require 'spec_helper'

describe User do
  it "should have valid factory" do
    FactoryGirl.build(:user1).should be_valid
  end
end

返回错误:

Failures:

  1) User should have valid factory
     Failure/Error: FactoryGirl.build(:user1).should be_valid
     NoMethodError:
       undefined method `first_name=' for #<User:0x000000061410f8>
     # ./spec/models/user_spec.rb:5:in `block (2 levels) in <top (required)>'

Finished in 0.05459 seconds
1 example, 1 failure

Failed examples:

rspec ./spec/models/user_spec.rb:4 # User should have valid factory

Randomized with seed 29084

spec/factories.rb

FactoryGirl.define do
  factory :admin1, class: User do
    first_name "admin"
    last_name "minstrator"
    password "admin1234"
    profile_name "profilename"
    email "admin@admin.com"
    password_confirmation "admin1234"
    admin true
    end

    factory :user1, class: User do
    first_name "user2"
    last_name "man2"
    password "user1234"
    profile_name "profilename"
    email "user2@user.com"
    password_confirmation "user1234"
    admin false
    end

  end

在我的 seed.rb 中使用开发数据时它工作正常,但现在我已经开始使用 Rspec 进行测试,但它都出错了。

我在这里做错了什么。目前我不是测试的忠实拥护者,但我需要在这里提高我的技能,因为我知道它对 Web 应用程序非常有用。

非常感谢您的帮助,如果您需要更多信息,请告诉我。

4

2 回答 2

1

如果您的代码在开发中有效,但在测试中无效,我的猜测是您的数据库测试副本不同步。尝试运行rake db:test:preparerake db:test:clone再次运行您的规范。

笔记:

db:test:cloneRails 4.2.0 中不需要'WARNING: db:test:clone is deprecated.Rails 测试助手现在自动维护您的测试模式,有关详细信息,请参阅发行说明。')

于 2013-11-04T16:04:17.310 回答
0

我认为这里的问题是我的一个迁移丢失了,因为模型中没有用户 first_name,所以没有定义任何内容。

给所有新手的一个重要提示,永远不要删除任何迁移。

正如荷马辛普森所说的“D'oh”

于 2013-11-04T17:56:26.313 回答