Мои tasks
методы CRUD все в настоящее время выполняются через ajax, и я хотел бы протестировать эту функциональность, используя Test :: Unit. Это возможно?
Я следую в книге Agile Web Development с Rails, и есть ссылка на тест, который тестирует аналогичную функциональность (но с Prototype).
test "should create line_item" do
assert_difference('LineItem.count') do
post :create, :product_id => products(:ruby).id
end
assert_redirected_to store_path
end
Я изменил это следующим образом:
test "should add task via ajax" do
assert_difference "Task.count" do
xhr :post, :create, :task => tasks(:one)
end
end
Ошибка, которую я продолжаю получать:
ActionView::Template::Error: undefined method '<=' for nil:NilClass
Итак, моя первая попытка - посмотреть, где это ловится. Он находится в моем файле create.js.erb, где у меня есть логика, в которой я выясняю, где новая задача принадлежит в секционированном списке всех задач.
<% if @task.due_date <= Date.today %>
var id = "#tasks_today";
var desc = null;
<% end %>
...if statements continue...
Итак, я предполагаю, что @task не передается в create.js.erb, когда сам тест проходит, но когда я вручную тестирую, все работает отлично. Вот мой контроллер:
respond_to :js
def create
@task = current_user.tasks.new(params[:task])
if @task.save
respond_with(@task)
end
end
Тест :: Модуль не создан для тестирования с Jquery? Будет ли это работать только с прототипом? Я делаю это совершенно неправильно?