Использование ожидаемого {}. Для изменения, не проходит, но работает в консоли - PullRequest
0 голосов
/ 08 октября 2010

Я пытаюсь проверить метод на моей модели. Запуск в консоли работает, но мой тест rspec не проходит. Оформить заказ код:

Модель:

def import(master)
  hsh = master.attributes.delete_if { |k,v| k == 'id' }
  self.update_attributes(hsh)
end

Тест Rspec:

describe "#import" do

  let(:master) { Factory(:sheet, :work_order => 'M1234', :sample_size => 10, :sample_scheme => 'TEST#') }
  let(:wo) { Factory(:sheet, :work_order => 'W1234', :sample_scheme => 'ORIG#' ) }

  it "imports all of the attributes from the master" do
    expect { wo.import(master) }.to change( wo, :sample_scheme ).to(master.sample_scheme)
  end

end

Я не могу понять это, вот вывод:

'Sheet#import imports all of the attributes from the master' FAILED
sample_scheme should have been changed to "TEST#", but is now "ORIG#"

Как я уже сказал, код правильно импортирует атрибуты из мастера при запуске в консоли. Это просто тест rspec не проходит. Что я делаю не так?


изменение функции импорта приводит к передаче:

def import(master)
  hsh = master.attributes.delete_if { |k,v| k == 'id' }
  hsh.each do |k,v|
    self.update_attribute(k, v)
  end
  #self.update_attribute(:sample_scheme, hsh['sample_scheme'])
  #self.update_attributes(hsh)
end

Ответы [ 2 ]

0 голосов
/ 12 октября 2010

Проблемой был мой обратный звонок.По какой-то причине я перезагружал модель в обратном вызове обновления.Не уверен, почему у меня это было.Это объясняет, почему save возвращал истину, а моя модель все еще выглядела как старая.Спасибо Шингаре за помощь.Он заставил меня задуматься о том, что мне нужно.

0 голосов
/ 08 октября 2010

Метод изменения используется при изменении числа, а не при изменении данных.Вам нужен такой тест

describe "#import" do

  let(:master) { Factory(:sheet, :work_order => 'M1234', :sample_size => 10, :sample_scheme => 'TEST#') }
  let(:wo) { Factory(:sheet, :work_order => 'W1234', :sample_scheme => 'ORIG#' ) }

  it "imports all of the attributes from the master" do
    wo.sample_scheme.should.not == master.sample_scheme
    wo.import(master)
    wo.sample_scheme.should == master.sample_scheme
  end

end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...