Можно ли вызвать should_receive
для немодального объекта?
Если это так, мне интересно, почему этот тест не проходит. SiteStyle
has_many images
и когда я вызываю duplicate!
на сайте_стиле, я хочу, чтобы images
также вызывал duplicate
для себя. Тест не пройден. Фактические изображения дублируются, хотя. Почему это так?
Модель SiteStyle:
class SiteStyle < ActiveRecord::Base
belongs_to :site
belongs_to :user
validates_presence_of :name, :user
has_many :images, :as => :imageable, :order => "position", :dependent => :destroy
...
def duplicate!(user, *args)
options = args.extract_options!
to_site ||= Site.find(options[:site_id])
dup_style = self.class.create :site_id => to_site.id, :name => name, :user_id => user.id
self.images.each { |image| image.duplicate!(dup_style) }
dup_style
end
...
end
SiteStyleSpec:
require 'spec_helper'
describe SiteStyle do
...
describe "duplicate!(user, *args)" do
before do
@creator = User.make
@site = Site.make
@style = SiteStyle.make :site => @site, :user => @creator
end
...
it "should have a duplicate of the images" do
@image = Image.make :imageable_type => @style.class.name, :imageable_id => @style.id
@image.should_receive(:duplicate!).once
@dup_style = @style.duplicate!(@creator)
end
end
end
Ошибка:
Failures:
...
2) SiteStyle duplicate!(user, *args) should have a duplicate of the images
Failure/Error: @image.should_receive(:duplicate!).once
(#<Image:0xc7b40d8>).duplicate!(any args)
expected: 1 time
received: 0 times
# ./spec/models/site_style_spec.rb:83