Тесты Rspec терпят неудачу в подобных ситуациях - PullRequest
0 голосов
/ 13 июня 2011

У меня есть следующие методы в моем контроллере:

def create
  @user = User.new(params[:user])
    if @user.save        
      redirect_to log_in_path, notice: 'Signed up!'
    else
      render "new"
    end
end

def destroy
  @user = User.find(params[:id])
  @user.destroy
    redirect_to users_path, notice: 'User was deleted.'
end

и характеристики:

describe "POST 'create'" do
  it "should allow create user" do
    @user = Factory(:user)
    post 'create', :id => @user
    response.should be_success
  end

describe "DELETE 'destroy'" do     
  it "should delete the user" do
    @user = Factory(:user)
    delete "destroy", :id => @user
    response.should redirect_to users_path
  end
end

Я не понимаю, почему тест для метода create проходит, даже если сразу после сохранения объекта происходит перенаправление. если я установлю:

  response.should redirect_to log_in_path

как ожидание, тест не пройден, то же самое для метода destroy , если я переключу ожидание на:

response.should be_success

это не удастся. Какие-либо предложения? Спасибо

1 Ответ

3 голосов
/ 13 июня 2011

Реальный ответ на ваше действие создания - 200 OK (даже если ваша модель недействительна и не сохранена), и это то, что вы сейчас тестируете.

Кроме этого, ваш тест создания не годится.Действие создания принимает хэш пользователя в качестве параметра, а не идентификатор пользователя.Вы, вероятно, хотите что-то вроде этого:

  it "should allow create user" do
    @user = Factory.attributes_for(:user)
    post 'create', :user => @user
    @user.persisted?.should be_true
    response.should be_redirect
  end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...