Rspec - высмеивание объекта в приватном методе - PullRequest
0 голосов
/ 31 декабря 2010

В нашем приложении мы написали колбэки after_create / update / delete для некоторых заинтересованных моделей доменов.Внутри этих моделей мы создаем новую модель аудита, которая xmlizes необходимых данных измененной модели и сохраняет их в таблице аудита.Например, обратный вызов after_create модели консультанта выглядит следующим образом:
<br> def after_create<br> xml = #private xmlize() is called which returns the data of new Consultant object<br> audit = Audit.new :data=>xml.to_s<br> audit.save<br> end

Теперь я хотел бы либо смоделировать объект аудита, чтобы увидеть, вызывается ли его метод сохранения с использованием RSpec.Или, что еще лучше, если есть способ пересмотреть содержимое xml через RSpec, я был бы рад узнать, как это сделать через среду Ruby in Rails.

1 Ответ

0 голосов
/ 31 декабря 2010

Вы не можете естественным образом насмехаться над объектом Audit, потому что он создан внутри метода.

Что вы можете сделать, это создать и внедрить (somwhere ...) AuditFactory и использовать его для созданияОбъект аудита.

Затем фабрика и аудит могут быть смоделированы с ожиданием того, что фиктивная фабрика создает фиктивный аудит и что вызван метод сохранения аудита.

Ожидание прифабрика также может быть настроена на ожидание правильного xml.

...