Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何格式化多行RSpec,期望{}更改_Ruby On Rails_Ruby_Rspec - Fatal编程技术网

Ruby on rails 如何格式化多行RSpec,期望{}更改

Ruby on rails 如何格式化多行RSpec,期望{}更改,ruby-on-rails,ruby,rspec,Ruby On Rails,Ruby,Rspec,是否有更好的方法格式化此测试以使其更具可读性 expect { within '.foo' do click_link 'Delete' end }.to change {Foo.count}.by 1 期望do…end起作用,但更丑…可能是这样的吗 expected = expect do within '.foo' do click_link 'Delete' end end expected.to change { Foo.count }.by 1

是否有更好的方法格式化此测试以使其更具可读性

expect { 
  within '.foo' do
    click_link 'Delete'
  end
}.to change {Foo.count}.by 1

期望
do…end
起作用,但更丑…

可能是这样的吗

expected = expect do
  within '.foo' do
    click_link 'Delete'
  end
end

expected.to change { Foo.count }.by 1

不太漂亮,但减少了一些线条噪音。

因为将所有内容放在大括号中,并且放在一行太长,我会这样写:

expect do
  within(".foo") { click_link "Delete" }
end.to change { Foo.count }.by 1
更新: 未测试,但这也应该有效:

click_delete_link = lambda { within(".foo") { click_link "Delete" } } 
expect { click_delete_link }.to change { Foo.count }.by 1

但我还是更喜欢第一个版本:)

对不起,这有什么问题吗?我觉得它不太可读…它使用{}表示不常见的多行块。。。