Как смоделировать метод настройки проверки dry-rb (использованный inf Reform) - PullRequest
0 голосов
/ 16 ноября 2018

Моя проблема заключается в том, что я хочу смоделировать свой пользовательский метод проверки, который возвращает некоторые данные из БД (список идентификаторов - чтобы проверить, присутствует ли данный идентификатор в моей БД).

Так меньше разговоров, больше кода: в моей рассылке :: Контракт :: Создать класс у меня

validation do
  configure do
    config.messages_file = "config/error_messages.yml"
    def publisher_exists?(value)
      Publisher.where(id: value).present?
    end
  end
  required(:publisher_id).filled(:publisher_exists?)
end

И в тесте я пытаюсь запустить

expect(Newsletter::Contract::Create).to receive(:publisher_exists?).and_return(true)

но, очевидно, я получаю

Newsletter::Contract::Create does not implement: publisher_exists?

Итак, вопрос в том, какой объект вызывает мои пользовательские методы проверки, чтобы я мог его смутить?;]

1 Ответ

0 голосов
/ 16 ноября 2018

До сих пор я понимаю, что, вероятно, есть некоторые классы eval / anynoumus, поэтому вместо насмешек над этим методом я остановлю AR, который используется внутри метода.expect(Publisher).to receive_message_chain(:where, :present?).and_return(true)

...