Я пытаюсь выучить TDD, и это часть моей домашней работы, я не мог понять, как это сделать.
Я хочу проверить create
действие контроллера, а вот мой код для проверки:
require 'spec_helper'
describe MoviesController do
describe 'create' do
it 'should call the model method perform create!' do
Movie.should_receive(:create!).with({"title" => 'Milk', "rating" => 'R'})
post :create, :movie => {:title => 'Milk', :rating => 'R'}
end
end
end
Но я получил:
Failures:
1) MoviesController create should call the model method performe create!
Failure/Error: post :create, :movie => {:title => 'Milk', :rating => 'R'}
NoMethodError:
undefined method `title' for nil:NilClass
# ./app/controllers/movies_controller.rb:50:in `create'
# ./spec/controllers/movies_controller_spec.rb:7:in `block (3 levels) in <top (required)>'
Finished in 0.21714 seconds
А вот и создай действие, против которого я тестирую. Да, это TDD, и да, я тестирую
рабочий код, и это тестирование не работает: D
def create
@movie = Movie.create!(params[:movie])
flash[:notice] = "#{@movie.title} was successfully created."
redirect_to movies_path
end
Я даже не знаю, почему я получил сообщение об ошибке неопределенного метода? Я прошел еще несколько тестов, но я удалил этот фрагмент кода для простоты, поэтому я не думаю, что это связано с проблемой конфигурации, связанной с БД / моделью. Но почему не работает и как его поменять?
Приветствия