水豚警告 "checking for expected text of nil"

Capybara warns of "checking for expected text of nil"

当我进行 运行 测试时,我碰巧在我的终端机 window 中看到了我 运行:

的特定功能规范
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。有没有办法帮助我进一步排查此消息?

这是由于在检查例如expect(page).to have_text user.middle_name 在这种情况下 user.middle_name 为零,因为用户没有中间名。

警告消息在您的“gems-directory”/gems/capybara-x.x.x/lib/capybara/queries/text_query.rb.

中发出

要找出 nil 检查发生的位置,请在 warn.

之前添加 raise "here I check for 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 have_text @foo,但我没有在任何地方使用或初始化 @foo。我犯了大错。