7

このテストをより読みやすくするためにフォーマットするより良い方法はありますか?

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

動作を期待しdo...endますが、さらに醜いです...

4

2 に答える 2

13

多分このようなもの?

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

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

正確にはきれいではありませんが、ラインノイズの一部を低減します。

于 2012-11-07T18:36:10.547 に答える
6

すべてを中括弧で囲み、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

しかし、私はまだ最初のバージョンの方が好きです:)

于 2012-11-08T02:54:31.830 に答える