Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails教程第10章(友好转发)测试错误,预期响应为a<;3XX:重定向>;,但这是一个<;200:正常>;_Ruby On Rails_Integration Testing_Railstutorial.org - Fatal编程技术网

Ruby on rails Rails教程第10章(友好转发)测试错误,预期响应为a<;3XX:重定向>;,但这是一个<;200:正常>;

Ruby on rails Rails教程第10章(友好转发)测试错误,预期响应为a<;3XX:重定向>;,但这是一个<;200:正常>;,ruby-on-rails,integration-testing,railstutorial.org,Ruby On Rails,Integration Testing,Railstutorial.org,嗯,我刚开始使用Rails编码,MichaelHartl教程非常棒,到现在为止,我已经能够找到我的编码错误。。。现在我在第10章“友好转发”中,在执行成功编辑测试时,我偶然发现了一个我看不透的错误 测试\u成功\u编辑\u与\u友好\u转发\u用户编辑测试(1.07s) 预期响应为a,但为a 测试/集成/用户编辑测试。rb:32:in'block in' 我的用户\u编辑\u测试是: require 'test_helper' class UserEditTest < ActionDis

嗯,我刚开始使用Rails编码,MichaelHartl教程非常棒,到现在为止,我已经能够找到我的编码错误。。。现在我在第10章“友好转发”中,在执行成功编辑测试时,我偶然发现了一个我看不透的错误

测试\u成功\u编辑\u与\u友好\u转发\u用户编辑测试(1.07s) 预期响应为a,但为a 测试/集成/用户编辑测试。rb:32:in'block in'

我的用户\u编辑\u测试是:

require 'test_helper'

class UserEditTest < ActionDispatch::IntegrationTest

  def setup
    @user = users(:michael)
  end

  test "unsuccessful edit" do
    log_in_as(@user)
    get edit_user_path(@user)
    assert_template 'users/edit'
    patch user_path(@user), params: { user: { name:  "",
                                              email: "foo@invalid",
                                              password:              "foo",
                                              password_confirmation: "bar" } }

    assert_template 'users/edit'
  end

test "successful edit with friendly forwarding" do
    get edit_user_path(@user)
    log_in_as(@user)
    assert_redirected_to edit_user_url(@user)
    name  = "Foo Bar"
    email = "foo@bar.com"
    patch user_path(@user), params: { user: { name:  name,
                                              email: email,
                                              password:              "",
                                              password_confirmation: "" } }
    assert_not flash.empty?
    assert_redirected_to @user <---  this is line 32 from the test
    @user.reload
    assert_equal name,  @user.name
    assert_equal email, @user.email
  end
end
我的会话控制器是:

class UsersController < ApplicationController
  before_action :logged_in_user, only: [:edit, :update]
  before_action :correct_user,   only: [:edit, :update]
  def show
    @user  = User.find(params[:id])
      end

  def new
    @user = User.new
  end

  def create
    @user = User.new(user_params) # Not the final implementation!
    if @user.save
      log_in @user
      flash[:success] = "Welcome to the Sample App"
      redirect_to @user
    else
      render 'new'
    end
  end

  def edit
      end

  def update
       if @user.update_attributes(user_params)
          flash[:success] = "Profile updated"
          redirect_to @user
      # Handle a successful update.
    else
      render 'edit'
    end
  end

  private

    def user_params
    params.require(:user).permit(:name, :email, :password,
                                 :password_confirmation)
    end 

#Before Filters

#Confirms a logged-in user
   def logged_in_user
      unless logged_in?
        store_location
        flash[:danger] = "Please log in."
        redirect_to login_url
      end
    end

    # Confirms the correct user.
    def correct_user
      @user = User.find(params[:id])
      redirect_to(root_url) unless current_user?(@user)
    end
end
class SessionsController < ApplicationController

  def new
  end

  def create
    @user = User.find_by(email: params[:session][:email].downcase)
    if @user && @user.authenticate(params[:session][:password])
      log_in @user
      params[:session][:remember_me] == '1' ? remember(@user) : forget(@user)
      redirect_back_or @user
    else
      flash.now[:danger] = 'Invalid email/password combination'
      render 'new'
    end
  end

  def destroy
    log_out if logged_in?
    redirect_to root_url
  end
end
class sessioncontroller

从我在其他问题中看到的情况来看,我理解问题,但似乎找不到解决问题的方法,我觉得问题就在我面前,但我看不到问题。

FWIW,您的友好转发工作正常,并在测试用例的前3行中进行了测试。
assert\u redirected\u to@user
测试对应于用户控制器更新,更具体地说是if分支中的
redirect\u to@user
语句。如果您登录到该站点并更新用户的配置文件,会发生什么情况?在那一点上也检查日志。

是的,昨天我正在运行它,进一步了解测试代码,发现FF运行正常。。。然后我在应用程序上运行了一次,看看测试中显示的错误是否回来了。。。不,它很完美,我可以提交用户的编辑,然后审查更改。。。重定向正是我所期待的。。。苏欧!!!还在想办法你解决过这个问题吗?这里也有同样的问题:
class SessionsController < ApplicationController

  def new
  end

  def create
    @user = User.find_by(email: params[:session][:email].downcase)
    if @user && @user.authenticate(params[:session][:password])
      log_in @user
      params[:session][:remember_me] == '1' ? remember(@user) : forget(@user)
      redirect_back_or @user
    else
      flash.now[:danger] = 'Invalid email/password combination'
      render 'new'
    end
  end

  def destroy
    log_out if logged_in?
    redirect_to root_url
  end
end