Тестирование named_scope с Mongoid и rspec - PullRequest
0 голосов
/ 31 октября 2011

Я новичок в RoR, и я пытаюсь протестировать простой named_scope для моей модели.

Но я не знаю, есть ли у меня проблема в моей модели (я использую mongoid), в моем тесте кода (я использую rspec) или на моей фабрике. Я получил эту ошибку

Mongoid :: Ошибки :: InvalidCollection: Доступ к коллекции для Movement не разрешен, так как это встроенный документ, пожалуйста, доступ к коллекции из корня документ.

Мои модели

class Movement
    include Mongoid::Document
    field :description, :type => String
    embedded_in :category

    named_scope :top, lambda { |number| { :limit => (number.size > 0 ? number : 10) } }    
end

class Category
  include Mongoid::Document
  field :name
  embeds_many :movement
end

Моя фабрика, мошенница фабрикант

Factory.define :movement do |m|
  m.amount 24
  m.date "30/10/2011"
  m.description "Beer"
  m.association :category, :factory => :category
end

Factory.define :category do |c|
  c.name "Drink"
end

Мой тест

describe "when i have a movement list" do
  it "recent method should return last 2 movements" do
    @movements = (1..3).collect { Factory(:movement) }
    recent_movements = Movement.top(2)
    recent_movements.should have(2).entries
  end
end

И ошибка:

Mongoid :: Ошибки :: InvalidCollection: Доступ к коллекции для Движения не разрешен, так как это встроенный> документ, пожалуйста, получите доступ к коллекции из корневого документа.

Я попытался немного изменить свою фабрику.

   Factory.define :movement do |m|
      m.amount 24
      m.date "30/10/2011"
      m.description "Beer" 
      m.category { [ Factory.build(:category) ] }
    end

Но тогда я получил другую другую ошибку:

Сбой / Ошибка: @movements = (1..3) .collect {Фабрика (: движение)} NoMethodError: неопределенный метод отражать_on_association для #

Может ли кто-нибудь мне помочь?

Спасибо

1 Ответ

0 голосов
/ 08 ноября 2011

У меня только что была та же ошибка в моем приложении. Я закончил с ошибкой в ​​моем классе, и это решило мою проблему.

...