тест контроллера rails, получая ActionView :: MissingTemplate: отсутствует шаблон - PullRequest
2 голосов
/ 23 января 2011

Я решил наконец написать несколько тестов для своего приложения rails.

Мой контроллер "UsersController".У него нет HTML, так как у меня есть приложение для iphone, отправляющее сообщение на контроллер rails.

Вот мой тест:

require 'test_helper'

class UsersControllerTest < ActionController::TestCase


  def test_create
    # to http post
    # /users
    #user[email]=%@&user[password]=%@&user[password_confirmation]=%@
    #post
    post(:create, :user => {:password => "testpassword", :password_confirmation => "testpassword"})
  end

Проблема в том, что я получаю эту ошибку:

1) Ошибка: test_create (UsersControllerTest): ActionView :: MissingTemplate: пользователи шаблона отсутствуют / новые с {: handlers => [: erb,: rjs,: builder,: rhtml,: rxml],:форматы => [: html],: locale => [: en,: en]} в путях просмотра

Итак, я предполагаю, что он пытается заполнить страницу HTML?Если так, я нахожу это странным.Я бы подумал, что это будет напрямую делать пост на контроллере.Может ли кто-нибудь подтвердить, что этот метод «post» пытается заполнить HTML-форму?

Если это так, как мне приступить к написанию теста для прямой отправки HTTP-сообщения контроллеру?

Спасибо за любую помощь

Ответы [ 2 ]

6 голосов
/ 04 мая 2012

Вы можете указать «формат», чтобы он работал:

post(:action, {'param1'=>'value1', 'param2' => 'value2', :format => 'js'})
1 голос
/ 23 января 2011

Если не указано иное, метод post предполагает, что запрошенный тип контента - HTML. Обычно действие create выглядит примерно так:

@user = User.new(params[:user])
if @user.save
  redirect_to posts_path
else
  render :new
end

Если действие завершается неудачей, оно пытается отобразить «users / new», которого не существует, и, следовательно, ошибка.

Итак, здесь есть пара вопросов. Не ясно, какой тип контента ожидается (XML?). Действие проваливается, но мы не можем понять, почему. Это может помочь отредактировать вопрос, чтобы показать нам, что делает действие контроллера.

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