Rspec不测试有关重定向的通过测试

时间:2019-01-30 05:47:37

标签: ruby-on-rails ruby rspec sinatra

我正在训练营中,似乎无法通过这项测试。该项目正在创建您的twitter的bootleg版本,测试是:

it 'signup directs user to twitter index' do
  params = {
    :username => "skittles123",
    :email => "skittles@aol.com",
    :password => "rainbows"
  }
  post '/signup', params
  expect(last_response.location).to include("/tweets")
end

我处理此测试的控制器如下:

 post '/users' do
    @user = User.create(params[:user])
    @error = @user.errors.full_messages

    unless @error == []
      redirect to '/signup'
    else
      session[:user_id] = @user.id
      redirect to '/tweets'
    end
  end

基本上发生的是,当我注册一个用户并且数据持久保存到数据库中时,我的测试应该通过,因为预期的last_response.location将包含'/tweets',这就是 它重定向到。我不明白为什么它没有过去。

1 个答案:

答案 0 :(得分:1)

因为该测试要求发帖/signup,而不是在用户发布信息以创建我使用的帐户/signup之后使用/users作为路由方法名称。这导致了错误。