1

次のテストがあります。これは、タスクの作成時に新しい Task と TaskConnection (ユーザーとタスク間の結合テーブル) が作成されるかどうかをチェックします。これまでのところ、2つのラムダでそれを確認し、1行で実行したいと考えています...

 68       it 'can create new task' do       
 69         lambda do
 70           lambda do
 71             post :create, :project_id => project,         
 72                           :task => valid_attributes
 73           end.should change(Task, :count).by(1)
 74         end.should change(TaskConnection, :count).by(1)                                                                                          
 75       end

このようなもの.それは可能ですか?

 68       it 'can create new task' do       
 69         lambda do
 71           post :create, :project_id => project,         
 72                         :task => valid_attributes
 73         end.should change(Task && TaskConnection, :count).by(1 && 1)                                                                                         
 75       end
4

1 に答える 1

1

2 番目の例で提案したようにはできませんが、次のように組み合わせることができます。

it 'can create new task' do
  lambda do
    post(:create, :project_id => project, :task => valid_attributes)
  end.should (change(Task, :count).by(1) && change(TaskConnection, :count).by(1))
end

ただし、このアプローチはあまりお勧めしません。簡潔ではありますが、障害が発生したときに RSpec が報告するエラーは、どの期待が失敗したかを示していません。それらの1つがあなたが思っていたように変わっていないことを示しているだけです.

于 2012-06-09T13:28:40.370 に答える