当前位置: 首页 > 知识库问答 >
问题:

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

甄越
2023-03-14

我必须为我的一个功能列表页面编写集成测试用例,该功能索引方法具有如下代码

def index
  @food_categories = current_user.food_categories
end

现在,当我试图为此编写一个测试用例时,它抛出了一个错误

'undefined method features for nil class' because it can not get the current user

现在我要做的是在下面的beforeach语句中编写登录过程,然后为features列表页面编写测试用例

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

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

这是我的规格文件,这是我的食物类别规格.rb

共有1个答案

厉念
2023-03-14

更新:您混淆了功能测试和集成测试。集成测试不使用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
 类似资料:
  • 我已经在我的Rails4应用程序中实现了JQuery文件上传。当我从浏览器手动测试文件上传时,文件上传工作正常,但测试失败。 下面是我上传JQuery文件的规范:需要'spec\u helper' 我使用rspec2、水豚2和恶灵来实现这个特性规范。

  • 我最近开始使用QUnit来单元测试我的JavaScript,我有点困惑的功能在那里留档:。 根据文档,设计用于: [s]指定在测试中预期运行多少个断言。 这是他们给出的例子: 我在这里唯一看到的是维护噩梦。每次向测试添加断言时,都必须更新该数字,否则测试将失败。这种功能是否有实际应用?

  • customer-Mapper.xml daoimpl.java

  • 问题内容: 控制器中包含以下内容: 规格: 但这不起作用: 我看到“保存文件”对话框,但显然不是“警告”对话框。 如何单击确定并让水豚看到数据? 问题答案: 改编自CollectiveIdea和其他来源。 在OSX上工作。Firefox 34.0.5 规格: 规范助手: 共享/download_helper.rb:

  • 我正在努力做到没有方法,以便更好地把握概念。 我真的很接近。我的数学课好像没课了。有什么我不明白的? 输出: