rspec关联创建错误

时间:2013-08-12 14:33:09

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

我有一个模型item has_many ratings和一个ratings belongs_to item ratings belongs_to user我想强制创建项目的用户也对其进行评分。其他用户可以稍后对其进行评级。 item和user在我的模型中没有关联。 我在item_spec中执行以下操作,这在no implicit conversion of Symbol into Integer下面的@item = Item.new(name: "Item1",处给出了错误class Item < ActiveRecord::Base has_many :ratings, dependent: :destroy, inverse_of: :item accepts_nested_attributes_for :ratings, :allow_destroy => true validates :name , :length => { minimum: 3 } validates :category , :length => { minimum: 3 } validates_presence_of :ratings end require 'spec_helper' describe Item do before do @item = Item.new(name: "Item1", url: "www.item1.com", full_address: "Item1Address", city: "Item1City", country: "Item1Country", category: "Item1Type", ratings_attributes: {"rating" => "3", "comment" => "Ahh Good"} ) end

factory :item do
    before_create do |r|
      r.ratings<< FactoryGirl.build(:ratings, item: r )
    end
    name "Item1"
    url "www.Item1.com"
    full_address "Item1Address"
    city "Item1City"
    country "Item1Country"
    category "Item1Category"
  end  

  factory :ratings do
    rating      3
    comment     "Its not that bad"
    user
  end
end

同样使用FactoryGirl我正在做这样的事情

{{1}}

这也不是想要的结果。 任何人都可以帮我解决这个问题。谢谢!

1 个答案:

答案 0 :(得分:0)

工作代码,现在测试一些关联顺序有问题,但至少所需的功能正常工作。

factory :item do
    name "Item1"
    url "www.Item1.com"
    full_address "Item1Address"
    city "Item1City"
    country "Item1Country"
    category "Item1Category"
  end

  factory :ratings, :class => 'Ratings' do
    association :item, factory: :item, strategy: :build
    user
    rating      3
    comment     "Its not that bad"
  end

  factory :item_with_rating, parent: :item do
    ratings {[FactoryGirl.create(:ratings)]}
  end

这是spec文件

require 'spec_helper'

describe Item do
  before do
    @item =  FactoryGirl.create(:item_with_rating)
  end

  subject { @item }
  it { should respond_to(:name) }
  it { should respond_to(:url) }
  it { should respond_to(:full_address)}
  it { should respond_to(:city) }
  it { should respond_to(:country) }
  it { should respond_to(:category) }
  it { should respond_to(:ratings) }
  it { should_not respond_to(:type) }
  it { should_not respond_to(:user_id) }
  it { should be_valid }

项目

的模型文件没有变化