сбой примера с неопределенным методом `model_name’ для RSpec ::Mocks:: Mock:Class и сбой / ошибка: Bookmark.should_receive(:new)

#ruby-on-rails #mongodb #rspec #devise

#ruby-on-rails #mongodb #rspec #разработать

Вопрос:

Привет, я не знаю, почему этот тест не выполняется. Это пример из «экспертной» немецкой книги, может быть, кто-нибудь сможет мне помочь…. https://github.com/AGERECKE/Rails-Book-Project
http://pastebin.com/q4kS59ek

Спасибо

Ответ №1:

  1. о received: 0 times with any arguments том, что вы используете метод visit , который обычно используется для «приемочных» тестов, а не для тестов контроллера. Я не знаю, что этот метод делает в этом случае. Я думаю, вам следует изменить его на post

  2. о undefined method 'model_name' for RSpec::Mocks::Mock:Class вас заглушка Bookmark.stub(:new).and_return(@bookmark) где @bookmark = double(Bookmark) — это означает, что @bookmark это НЕ экземпляр Bookmark , это экземпляр RSpec::Mocks::Mock:Class . Когда действие create начинает работать, оно пытается сохранить запись. Метод save возвращает false (вы его заглушаете), и представление new снова отображается. Эта страница содержит форму, на основе @bookmark которой выполняются вызовы model_name . Возможное решение: использовать @bookmark = Bookmark.new

Комментарии:

1. Привет @gotva, я перешел visit на post и в bookmarkscontroller я изменил новый метод @bookmark = Bookmark.new(params[:bookmark]) to @bookmark = Bookmark.new , но я получаю ссылку . может быть, я вас не понял.

2. ваш контроллер был правильным (я надеюсь). Проблема в этой заглушке . Для именно этого описания вы должны изменить @bookmark = double(Bookmark) на @bookmark = Bookmark.new