gpt4 book ai didi

ruby - 如何避免 RSpec 中的 "Useless use of == in void context"?

转载 作者:数据小太阳 更新时间:2023-10-29 06:37:10 24 4
gpt4 key购买 nike

在 RSpec 中,如果我有警告并且有

x.should == 42
another_line_of_code

然后我得到一个关于

的警告
warning: useless use of == in void context

还有什么我可以做的吗

  1. 关闭警告
  2. 将其更改为 bitbucket = (x.should == 42)

最佳答案

使用:

x.should eq(42)

或者:

x.should be == 42

或者移动 x.should == 42 使其成为 it block 中的最后一行。


对于那些思考但是为什么?

的人

我完全是 Ruby 的菜鸟,但这是我的理解:

警告来自 Ruby,因为像 x.should == 421 == 1 这样的语句返回一个值。如果这个返回值实际上没有被使用(例如,分配给一个变量,用作一个函数的参数或从 block 中返回)那么 Ruby 可以理解地认为首先使用该语句是没有意义的并提醒你这一点。

要对此进行测试,您可以使用 -w 标志启动 irb 并添加以下代码:

> irb -w

def example
1 == 1
:hello
end

1 == 1 应该在 void 上下文中发出关于无用 == 的警告。在没有 :hello 行的情况下尝试它,您将不会收到警告,因为 1 == 1 将用作 return 语句。

我知道 Op 和这里的其他人已经理解了这一点。但是,我想为像我这样的人发布这篇文章,他们可能想知道为什么会发出警告以及为什么提出的解决方案解决了这个问题。

关于ruby - 如何避免 RSpec 中的 "Useless use of == in void context"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3645505/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com