Тест RSpec пользовательского контроллера сеанса Devise завершился неудачно с AbstractController :: ActionNotFound

В настоящее время я пытаюсь протестировать настраиваемый контроллер сеанса Devise с помощью rspec. Мой контроллер выглядит так:

class SessionsController < Devise::SessionsController

  def create 
    #valid email?
    if !(params[:email] =~ /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/)
      set_flash_message :notice, "Please enter a valid e-mail address!"
    end

    super
  end
end

Мой тест RSpec Controller выглядит следующим образом:

require 'spec_helper'
require 'devise/test_helpers'

describe SessionsController do  

  it "should put a warning on invalid mail address login attempt" do
    post :create, :user => {:email => 'invalidEmailAddress'}
    response.should contain "Please enter a valid e-mail address!"
  end

  it "should put no warning on valid mail address login attempt" do
    pending
  end
end

Если я выполняю тест RSpec, он терпит неудачу со следующей строкой:

Failure/Error: post :new, :user => {:email => 'invalidEmailAddress'}
     AbstractController::ActionNotFound
     # ./spec/controllers/sessions_controller_spec.rb:7

Советы из plataformatec Devise Wiki, а также этот пост не решило эту проблему. Спасибо за вашу помощь.

Дополнение

Я исследовал дальше. На самом деле мне удалось "удалить" ошибку с помощью следующего дополнения к спецификации контроллера:

before(:each) do
  request.env['devise.mapping'] = Devise.mappings[:user]
end

Но теперь появляется новая ошибка:

Failure/Error: post :create  #currently fails with multiple render warning
Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".

Даже если метод create отсутствует в наследующем контроллере, ошибка появляется. Ошибка не появляется, например, в get: new. Вроде пост: только создание. SessionsController def создать # действительный адрес электронной почты? ...

В настоящее время я пытаюсь протестировать настраиваемый контроллер сеанса Devise с помощью rspec. Мой контроллер выглядит так:

class SessionsController < Devise::SessionsController

  def create 
    #valid email?
    if !(params[:email] =~ /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/)
      set_flash_message :notice, "Please enter a valid e-mail address!"
    end

    super
  end
end

Мой тест RSpec Controller выглядит следующим образом:

require 'spec_helper'
require 'devise/test_helpers'

describe SessionsController do  

  it "should put a warning on invalid mail address login attempt" do
    post :create, :user => {:email => 'invalidEmailAddress'}
    response.should contain "Please enter a valid e-mail address!"
  end

  it "should put no warning on valid mail address login attempt" do
    pending
  end
end

Если я выполняю тест RSpec, он терпит неудачу со следующей строкой:

Failure/Error: post :new, :user => {:email => 'invalidEmailAddress'}
     AbstractController::ActionNotFound
     # ./spec/controllers/sessions_controller_spec.rb:7

Советы из plataformatec Devise Wiki, а также этот пост не решило эту проблему. Спасибо за вашу помощь.

Дополнение

Я исследовал дальше. На самом деле мне удалось "удалить" ошибку с помощью следующего дополнения к спецификации контроллера:

before(:each) do
  request.env['devise.mapping'] = Devise.mappings[:user]
end

Но теперь появляется новая ошибка:

Failure/Error: post :create  #currently fails with multiple render warning
Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".

Даже если метод create отсутствует в наследующем контроллере, ошибка появляется. Ошибка не появляется, например, в get: new. Вроде пост: только создание. SessionsController def создать # действительный адрес электронной почты? ...

В настоящее время я пытаюсь протестировать настраиваемый контроллер сеанса Devise с помощью rspec. Мой контроллер выглядит так:

class SessionsController < Devise::SessionsController

  def create 
    #valid email?
    if !(params[:email] =~ /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/)
      set_flash_message :notice, "Please enter a valid e-mail address!"
    end

    super
  end
end

Мой тест RSpec Controller выглядит следующим образом:

require 'spec_helper'
require 'devise/test_helpers'

describe SessionsController do  

  it "should put a warning on invalid mail address login attempt" do
    post :create, :user => {:email => 'invalidEmailAddress'}
    response.should contain "Please enter a valid e-mail address!"
  end

  it "should put no warning on valid mail address login attempt" do
    pending
  end
end

Если я выполняю тест RSpec, он терпит неудачу со следующей строкой:

Failure/Error: post :new, :user => {:email => 'invalidEmailAddress'}
     AbstractController::ActionNotFound
     # ./spec/controllers/sessions_controller_spec.rb:7

Советы из plataformatec Devise Wiki, а также этот пост не решило эту проблему. Спасибо за вашу помощь.

Дополнение

Я исследовал дальше. На самом деле мне удалось "удалить" ошибку с помощью следующего дополнения к спецификации контроллера:

before(:each) do
  request.env['devise.mapping'] = Devise.mappings[:user]
end

Но теперь появляется новая ошибка:

Failure/Error: post :create  #currently fails with multiple render warning
Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".

Даже если метод create отсутствует в наследующем контроллере, ошибка появляется. Ошибка не появляется, например, в get: new. Вроде пост: только создание.

В настоящее время я пытаюсь протестировать настраиваемый контроллер сеанса Devise с помощью rspec. Мой контроллер выглядит так:

class SessionsController < Devise::SessionsController

  def create 
    #valid email?
    if !(params[:email] =~ /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/)
      set_flash_message :notice, "Please enter a valid e-mail address!"
    end

    super
  end
end

Мой тест RSpec Controller выглядит следующим образом:

require 'spec_helper'
require 'devise/test_helpers'

describe SessionsController do  

  it "should put a warning on invalid mail address login attempt" do
    post :create, :user => {:email => 'invalidEmailAddress'}
    response.should contain "Please enter a valid e-mail address!"
  end

  it "should put no warning on valid mail address login attempt" do
    pending
  end
end

Если я выполняю тест RSpec, он терпит неудачу со следующей строкой:

Failure/Error: post :new, :user => {:email => 'invalidEmailAddress'}
     AbstractController::ActionNotFound
     # ./spec/controllers/sessions_controller_spec.rb:7

Советы из plataformatec Devise Wiki, а также этот пост не решило эту проблему. Спасибо за вашу помощь.

Дополнение

Я исследовал дальше. На самом деле мне удалось "удалить" ошибку с помощью следующего дополнения к спецификации контроллера:

before(:each) do
  request.env['devise.mapping'] = Devise.mappings[:user]
end

Но теперь появляется новая ошибка:

Failure/Error: post :create  #currently fails with multiple render warning
Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".

Даже если метод create отсутствует в наследующем контроллере, ошибка появляется. Ошибка не появляется, например, в get: new. Вроде пост: только создание.

В настоящее время я пытаюсь протестировать настраиваемый контроллер сеанса Devise с помощью rspec. Мой контроллер выглядит так:

class SessionsController < Devise::SessionsController

  def create 
    #valid email?
    if !(params[:email] =~ /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/)
      set_flash_message :notice, "Please enter a valid e-mail address!"
    end

    super
  end
end

Мой тест RSpec Controller выглядит следующим образом:

require 'spec_helper'
require 'devise/test_helpers'

describe SessionsController do  

  it "should put a warning on invalid mail address login attempt" do
    post :create, :user => {:email => 'invalidEmailAddress'}
    response.should contain "Please enter a valid e-mail address!"
  end

  it "should put no warning on valid mail address login attempt" do
    pending
  end
end

Если я выполняю тест RSpec, он терпит неудачу со следующей строкой:

Failure/Error: post :new, :user => {:email => 'invalidEmailAddress'}
     AbstractController::ActionNotFound
     # ./spec/controllers/sessions_controller_spec.rb:7

Советы из plataformatec Devise Wiki, а также этот пост не решило эту проблему. Спасибо за вашу помощь.

Дополнение

Я исследовал дальше. На самом деле мне удалось "удалить" ошибку с помощью следующего дополнения к спецификации контроллера:

before(:each) do
  request.env['devise.mapping'] = Devise.mappings[:user]
end

Но теперь появляется новая ошибка:

Failure/Error: post :create  #currently fails with multiple render warning
Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".

Даже если метод create отсутствует в наследующем контроллере, ошибка появляется. Ошибка не появляется, например, в get: new. Вроде пост: только создание.

Failure/Error: post :new, :user => {:email => 'invalidEmailAddress'}
     AbstractController::ActionNotFound
     # ./spec/controllers/sessions_controller_spec.rb:7

Советы из Plataformatec Devise Wiki, а также этот пост не помогли решить эту проблему. Спасибо за вашу помощь.

Дополнение

Я исследовал дальше. На самом деле мне удалось "удалить" ошибку с помощью следующего дополнения к спецификации контроллера:

before(:each) do
  request.env['devise.mapping'] = Devise.mappings[:user]
end

Но теперь появляется новая ошибка:

Failure/Error: post :create  #currently fails with multiple render warning
Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".

Даже если метод create отсутствует в наследующем контроллере, ошибка появляется. Ошибка не появляется, например, в get: new. Вроде пост: только создание.

Failure/Error: post :new, :user => {:email => 'invalidEmailAddress'}
     AbstractController::ActionNotFound
     # ./spec/controllers/sessions_controller_spec.rb:7

Советы из Plataformatec Devise Wiki, а также этот пост не помогли решить эту проблему. Спасибо за вашу помощь.

Дополнение

Я исследовал дальше. На самом деле мне удалось "удалить" ошибку с помощью следующего дополнения к спецификации контроллера:

before(:each) do
  request.env['devise.mapping'] = Devise.mappings[:user]
end

Но теперь появляется новая ошибка:

Failure/Error: post :create  #currently fails with multiple render warning
Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".

Даже если метод create отсутствует в наследующем контроллере, ошибка появляется. Ошибка не появляется, например, в get: new. Вроде пост: только создание.

Failure/Error: post :create  #currently fails with multiple render warning
Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".

Ошибка появляется даже при отсутствии метода create в наследующем контроллере. Ошибка не появляется, например, в get: new. Вроде пост: только создание.

Failure/Error: post :create  #currently fails with multiple render warning
Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".

Ошибка появляется даже при отсутствии метода create в наследующем контроллере. Ошибка не появляется, например, в get: new. Вроде пост: только создание. У меня нет идей? Любая помощь? Спасибо!

16
задан kaihowl 1 December 2010 в 16:39
поделиться