1

我为devise-rspec-cucumber 项目运行 cucumber,但以下场景失败:

Scenario: User is not signed up
  Given I do not exist as a user
  When I sign in with valid credentials
  Then I see an invalid login message
    And I should be signed out

nil:NilClass (NoMethodError) 的未定义方法“flatten”

1 个场景(1 个失败)

4 个步骤(4 个通过)

我尝试删除除第一个步骤之外的每个步骤,但仍然失败:

Given /^I do not exist as a user$/ do
  create_visitor
  delete_user
end

在哪里

def create_visitor
  @visitor ||= { :name => "Testy McUserton", :email => "example@example.com",
    :password => "changeme", :password_confirmation => "changeme" }
end

def delete_user
  @user ||= User.where(:email => @visitor[:email]).first
  @user.destroy unless @user.nil?
end

但是如果我用 create_user 替换 create_visitor,它就会通过。

def create_user
  create_visitor
  delete_user
  @user = FactoryGirl.create(:user, @visitor)
end

我很困惑发生了什么事。在我看来,步骤定义期待一些我没有提供的东西。

4

2 回答 2

1

我之前收到了同样的错误信息。我确信我的脚步没有问题。因此,我尝试将 database_cleaner gem 升级到最新的(1.0.1),因为错误是由 database_cleaner 引起的。它确实解决了这个问题。如果您的 database_cleaner gem 版本不是 1.0.1,我建议您试试这个。做就是了

$ 捆绑更新 database_cleaner

于 2013-05-31T02:43:51.187 回答
0

这里存在问题:

  create_visitor
  delete_user

在第一步中,您创建了一个访问者,但没有创建一个用户。然后在第二步中,您尝试删除不存在的用户。这就是测试失败的原因。

我建议您检查逻辑并创建正确的步骤。

于 2013-04-22T00:29:06.303 回答