运行rspec+时出错;工厂女孩:未定义的方法&x27;一些工厂=';对于#<;类实例>;

运行rspec+时出错;工厂女孩:未定义的方法&x27;一些工厂=';对于#<;类实例>;,rspec,factory-bot,shoulda,ruby-on-rails-4.1,Rspec,Factory Bot,Shoulda,Ruby On Rails 4.1,我在这里有点新手。。我找不到解决rspec故障的明显方法。我正在尝试测试作用域唯一性验证(请参阅下面character\u class\u spec.rb中的测试)。我假设错误告诉我它找不到字符\u类工厂??不管怎么说,我正在为这项工作的数据和测试设置而挣扎。如能提供意见/帮助,将不胜感激 运行“rspec规范”时出错 1) 字符类 失败/错误:let(:character\u类){build(:character\u类)} 命名错误: 未定义的方法character\u class='for#

我在这里有点新手。。我找不到解决rspec故障的明显方法。我正在尝试测试作用域唯一性验证(请参阅下面character\u class\u spec.rb中的测试)。我假设错误告诉我它找不到字符\u类工厂??不管怎么说,我正在为这项工作的数据和测试设置而挣扎。如能提供意见/帮助,将不胜感激

运行“rspec规范”时出错 1) 字符类 失败/错误:let(:character\u类){build(:character\u类)} 命名错误: 未定义的方法
character\u class='for#
#./spec/models/character\u class\u spec.rb:9:in
block(2级)in' #./spec/models/character\u class\u spec.rb:14:in'block(2层)in'

字符\u类\u规范rb character_class.rb模型
我想出来了!!!问题是我的角色级工厂错了。我对其中一个属性使用了“character\u class”而不是“class\u name”。错误告诉我它找不到setter“character\u class=,因为这是CharacterClass的无效类定义。非常感谢一篇文章显示了通过rails控制台()调用FactoryGirl

require 'spec_helper'

RSpec.describe CharacterClass, :type => :model do

  it "has a valid factory" do
    expect { Factory.build(:character_class).to be_valid }
   end

  let(:char_class) { build(:character_class) }

  it { expect(char_class).to validate_uniqueness_of(:level).scoped_to(:class_name, :character_id)}

  # it "does not allow duplication of records" do
  #   expect { FactoryGirl.create(:character_class, level: 1, class_name: "Dwarf").to be_valid }
  #   expect { FactoryGirl.create(:character_class, level: 1, class_name: "Dwarf").to be_valid }
  # end

end
class CharacterClass < ActiveRecord::Base
  belongs_to :character

  validates :class_name, presence: true
  validates :character_id, presence: true
  validates :level, presence: true

  validates :level, uniqueness: { :scope => [:class_name, :character_id],
                        message: "should have unique level per class name" }
end
class CreateCharacterClasses < ActiveRecord::Migration
  def change
    create_table :character_classes do |t|
      t.string :class_name, null: false
      t.integer :level, null: false;
      t.belongs_to :character, index: true, null: false;

      t.timestamps null: false
    end
    add_index :character_classes, [:character_id, :class_name, :level], :name =>      'ind_chclass_on_ch_id_and_chname_and_level', :unique=>true
  end
end
group :test do
  gem 'minitest'
  gem 'faker'
  gem 'capybara'
  gem 'guard-rspec'
  gem 'launchy'
  gem 'shoulda-matchers', require: false
end