Ruby on rails 3.2 Rails应用程序。Rspec/capybara测试不访问辅助方法

Ruby on rails 3.2 Rails应用程序。Rspec/capybara测试不访问辅助方法,ruby-on-rails-3.2,capybara,integration-testing,factory-bot,rspec-rails,Ruby On Rails 3.2,Capybara,Integration Testing,Factory Bot,Rspec Rails,我有一个rails应用程序,它是Twitter的克隆。它有一个用户模型和一个会话模型。我正在为用户页面编写集成测试,并且正在使用factory(通过FactoryGirl)生成用户 我遇到了一个测试问题,无法运行一个方法一个助手方法 我在rspec spec/之后出现此错误: UserPages FollowUnfollows Post to /relationships click Follow button Failure/Error: visit user_path(other_

我有一个rails应用程序,它是Twitter的克隆。它有一个用户模型和一个会话模型。我正在为用户页面编写集成测试,并且正在使用factory(通过FactoryGirl)生成用户

我遇到了一个测试问题,无法运行一个方法一个助手方法

我在
rspec spec/
之后出现此错误:

UserPages FollowUnfollows Post to /relationships click Follow button
     Failure/Error: visit user_path(other_user)
     ActionView::Template::Error:
       undefined method `following? for nil:NilClass
spec/requests/user\u pages\u spec.rb

require 'spec_helper'

describe "UserPages" do 
    describe "FollowUnfollows" do
        describe "Post to /relationships" do
            let (:other_user) {FactoryGirl.create(:user)}
            let (:user) {FactoryGirl.create(:user)}
            before do
                sign_in user
            end

            it "click Follow button" do
                visit user_path(other_user)
            end
        end
    end
end
module SessionsHelper
    def start_session(user)
        cookies.permanent[:token] = user.token
        self.current_user=user
    end
    def user_signed_in?
        !current_user.nil?
    end
    def current_user
        @current_user ||= User.find_by_token(cookies[:token])
    end
    def current_user=(user)
        @current_user=user
    end
    def end_session
        self.current_user=nil
        cookies.delete(:token)
    end
end
我正在使用
spec/support/utilities.rb
文件登录用户:

include ApplicationHelper

def sign_in(user)
    visit signin_path
    fill_in "Username", with: user.username
    fill_in "Password", with: user.password
    click_button "Log In"
    cookies[:token] = user.token
end
我有另一个用户的显示页面,我让我的用户转到--
views/users/show.html.erb
(节略):


任何看过迈克尔·哈特尔教程的人都会意识到这一点。我试图从记忆中做到这一点,我也试图编写新的测试,理解我所做的一切。这就是我问这些问题的原因。非常感谢您的帮助或反馈。

您的测试在views/users/show.html.erb文件的
行中似乎失败。您的
User
类是否定义了
以下方法?
方法?它定义了。实际上,我转而使用Desive
def following?(other_user)关系。find_by_following_id(other_user.id)end
是我的用户模型
model.rb
我觉得那是你的问题。您是否尝试在您的Deviate
用户
类上重新安装
以下方法?
方法?不,在切换到Deviate之前,我遇到了问题。这篇文章帮助我决定这么做。我也有同样的问题:刚刚意识到既然错误是
未定义的方法跟踪?对于nil:NilClass
,您的
当前用户
方法似乎正在返回
nil
,因此
用户是否存在问题。按令牌(cookies[:令牌])查找\u
不返回用户?
module SessionsHelper
    def start_session(user)
        cookies.permanent[:token] = user.token
        self.current_user=user
    end
    def user_signed_in?
        !current_user.nil?
    end
    def current_user
        @current_user ||= User.find_by_token(cookies[:token])
    end
    def current_user=(user)
        @current_user=user
    end
    def end_session
        self.current_user=nil
        cookies.delete(:token)
    end
end