将RSpec匹配器分解为多行

时间:2015-06-12 07:20:43

标签: ruby rspec

有没有办法将长RSpec线分成两条不同的线:

expect(....).to
   eq(.....)

更新

现在我有一个错误:

  

故障/错误:   期待(@ query_builder.questions_from_time(@time_to_test))。至        引发ArgumentError:          expect语法不支持运算符匹配器,因此您必须将匹配器传递给#to

如果我删除换行符错误就会消失

2 个答案:

答案 0 :(得分:7)

to在技术上只是一种方法,但常见的风格是在rspec中忽略to方法的括号。但是,似乎Ruby解析器只是没有意识到你试图向to方法发送一个参数,如果你将它分成没有括号的新行。

以下任何一项都应该有效......

expect(....).
  to eq(.....)

expect(....)
  .to eq(.....)

expect(....).to eq(
  .....
)

expect(
  ....
).to eq(.....)

expect(
  ....
).to eq(
  .....
)

我想它的长短只是“在没有被括号括起来的论证之前不要破坏”。至于使用哪一种 - 这取决于具体的代码。我会做最容易阅读的事情并保持线路长度相当短。

答案 1 :(得分:7)

您可以在该行的末尾使用反斜杠来指示该行继续使用ruby:

expect(...).to \
  eq(...)