Rspec 水豚警告“检查预期的零文本”

Rspec 水豚警告“检查预期的零文本”,rspec,capybara,Rspec,Capybara,当我运行测试时,我碰巧在终端窗口中看到我正在运行的特定功能规范: Checking for expected text of nil is confusing and/or pointless since it will always match. Please specify a string or regexp instead. 我不相信我的代码有任何不正确的使用nil的地方,所以我想知道它是什么意思。我也没有在任何rspec期望或水豚方法中使用nil。有什么方法可以帮助我进一步排除此消息

当我运行测试时,我碰巧在终端窗口中看到我正在运行的特定功能规范:

Checking for expected text of nil is confusing and/or pointless since it will always match.
Please specify a string or regexp instead.

我不相信我的代码有任何不正确的使用nil的地方,所以我想知道它是什么意思。我也没有在任何rspec期望或水豚方法中使用nil。有什么方法可以帮助我进一步排除此消息的故障吗?

这是由于在检查例如expectpage.to时变量为nil而导致的,在本例中,user.middle\u name为nil,因为用户没有中间名

警告消息在gems目录/gems/capybara-x.x.x/lib/capybara/querys/text_query.rb中发出

为了找出nil检查发生在哪里,我在警告之前检查nil

您将在规范中出现运行时错误的行中获得该错误

RuntimeError
  here I check for nil
# ... stack trace omitted
# ./spec/requests/user_show_spec.rb:45:in `block (2 levels) in <top (required)>

我在使用实例变量时犯了一个错误,比如page.should有_text@foo,但我没有在任何地方使用或初始化@foo。我犯了一个严重错误。

请显示您的规范-如果nil作为预期值传递给文本匹配器,则Capybara只会输出该消息。跟踪已添加,因此在下一个版本中应该会更容易。