Ruby on rails 为什么在使用Rspec和Capybara编写测试用例时无法获取当前用户

Ruby on rails 为什么在使用Rspec和Capybara编写测试用例时无法获取当前用户,ruby-on-rails,rspec,devise,integration-testing,capybara,Ruby On Rails,Rspec,Devise,Integration Testing,Capybara,我必须为我的一个特性列表页面编写集成测试用例,该特性索引方法的代码如下所示 def index @food_categories = current_user.food_categories end 现在,当我试图为此编写一个测试用例时,它抛出了一个错误 'undefined method features for nil class' because it can not get the current user 现在我要做的是 我已经在beforeach语句中编写了登录过程,然后为特

我必须为我的一个特性列表页面编写集成测试用例,该特性索引方法的代码如下所示

def index
  @food_categories = current_user.food_categories
end
现在,当我试图为此编写一个测试用例时,它抛出了一个错误

'undefined method features for nil class' because it can not get the current user
现在我要做的是 我已经在beforeach语句中编写了登录过程,然后为特性列表页面编写了测试用例

您能告诉我如何获得当前用户吗

仅供参考,我曾使用Desive gem,并与Rspec一起处理集成测试用例

这是
这是我的更新:你混淆了功能测试和集成测试。集成测试不使用
get
,因为没有要测试的控制器操作,而必须使用
visit
(一些url)。然后,您必须检查页面的内容,而不是响应代码(后者用于功能测试)。它可能看起来像:

visit '/food_categories'
page.should have_content 'Eggs'
page.should have_content 'Fats and oils'
如果您需要功能测试,下面是一个示例:

# spec/controllers/your_controller_spec.rb
describe YourController do

  before do
    @user = FactoryGirl.create(:user)
    sign_in @user
  end

  describe "GET index" do

    before do
      get :index
    end

    it "is successful" do
      response.should be_success
    end

    it "assings user features" do
      assigns(:features).should == @user.features
    end
  end
end

# spec/spec_helper.rb
RSpec.configure do |config|
  #...
  config.include Devise::TestHelpers, :type => :controller
end

谢谢,但现在它为#抛出错误未定义的方法“sign_in”,请告诉我您是否有任何想法我正在编写集成测试用例是的,谢谢您的快速回复,但我已经在spec_helper.rb中添加了这一点,你想让我给你看我的spec\u helper.rb文件吗?@chirag.sweng
spec\u helper
,你有问题的spec将是最小值。始终尽可能多地提供有问题的信息。@chirag.sweng我错过了您关于集成测试的评论(您应该注意有问题的!)。您确定需要集成测试吗?分配仅在功能测试中测试(
spec/controllers
)。进行集成测试是为了确保特定链接、按钮和其他HTML元素位于页面上,并且您可以与它们进行交互。Hey@chirag.sweng您可能需要交换您提供的链接的名称。等级库辅助文件指向足部等级库文件,反之亦然。只是一张纸条而已。这是我的规格文件,这是我的食物类别规格.rb