Модульное тестирование Rails - невозможно перенаправить на ноль! - PullRequest
0 голосов
/ 31 октября 2010

у контакта есть много заметок;примечания принадлежат к контакту.В моем контроле заметок после успешного сохранения заметки я перенаправляю на контакт заметки, используя:

format.html { redirect_to(@note.contact, :notice => 'Note was successfully created.') }

В своем модульном тесте я проверяю возможность создания заметки и перенаправления на заметку.страница просмотра контактов.Мой прибор notes.yml просто устанавливает заметку, а в разделе настройки файла notes_controller_test.rb я назначаю заметку из прибора @ note.

Вот фактический тестовый код:

test "should create note" do
  assert_difference('Note.count') do
    post :create, :note => @note.attributes
  end
end

Я думаю, что заметка успешно сохраняется, но перенаправление не выполняется.Похоже, что redirect_to в контроллере выдает сообщение «Cannot redirect to nil!»ошибка, но я не могу понять, почему.

Вот мое действие создания заметок:

def create
@note = Note.new(params[:note])

respond_to do |format|
  if @note.save
    format.html { redirect_to(@note.contact, :notice => 'Note was successfully created.') }
    format.xml  { render :xml => @note.contact, :status => :created, :location => @note.contact }
  else
    format.html { render :action => "new" }
    format.xml  { render :xml => @note.contact.errors, :status => :unprocessable_entity }
  end
end

end

Ответы [ 2 ]

2 голосов
/ 31 октября 2010

Может показаться, что ваш прибор не создает и / или не загружает контакт в @note. 'Redirect to nil' генерируется, потому что @ note.contact возвращает nil. Удостоверьтесь, что contact_id вашей заметки является действительным, и эта заметка загружается из БД вместе с ее контактом до запуска теста.

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

Когда я добавлял свои контактные данные, я не указывал идентификатор при объявлении значений. Я просто положил:

one:
  firstname: John
  lastname: doe

Я добавил поле id в прибор и тест прошел. Милая! :) Спасибо, что указали мне в правильном направлении. Выглядит так, как будто вы не указываете конкретный идентификатор, тогда он получит сумасшедший длинный случайный идентификатор (видно из test.log).

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

one:
  firstname: John
  lastname: doe

А потом в моих заметках крепеж:

one:
  body: This is a note text.
  contact_id: <%= contacts(:one).id %>

Будет ли это работать?

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