将RSpec匹配器分解为多行

dem*_*mas 3 ruby rspec

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

expect(....).to
   eq(.....)
Run Code Online (Sandbox Code Playgroud)

更新:

现在我有一个错误:

失败/错误:期望(@ query_builder.questions_from_time(@time_to_test)).到ArgumentError:expect语法不支持运算符匹配器,因此必须将匹配器传递给#to.

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

Ben*_*ock 8

to从技术上讲,这只是一种方法,但常见的风格是to在rspec中省略方法的括号.但是,to如果将它分隔为没有括号的新行,Ruby解析器似乎没有意识到您正在尝试向该方法发送参数.

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

expect(....).
  to eq(.....)
Run Code Online (Sandbox Code Playgroud)

要么

expect(....)
  .to eq(.....)
Run Code Online (Sandbox Code Playgroud)

要么

expect(....).to eq(
  .....
)
Run Code Online (Sandbox Code Playgroud)

要么

expect(
  ....
).to eq(.....)
Run Code Online (Sandbox Code Playgroud)

要么

expect(
  ....
).to eq(
  .....
)
Run Code Online (Sandbox Code Playgroud)

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


Fre*_*ung 8

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

expect(...).to \
  eq(...)
Run Code Online (Sandbox Code Playgroud)