2011-10-22 7 views
0

私は別のオブジェクトのメソッド(IO#delete)を何度も呼び出すオブジェクト(Sample)の仕様を書いています。メソッドの特定の呼び出しへの仕様の分離

私はこれを行うときただし、このメソッドのテストを隔離したい:

class Sample 
    def delete_them 
    io.delete "file1" 
    io.delete "folder1" 
    end 
end 

describe Sample do 
    let(:io) { stub.as_null_object } 
    subject { Sample.new.tap { |s| s.stub(:io).and_return(io) }} 

    it "deletes file1" do 
    io.should_receive(:delete).with("file1") 
    subject.delete_them 
    end 

    it "deletes folder1" do 
    io.should_receive(:delete).with("folder1") 
    subject.delete_them 
    end 
end 

を私は複数のメソッドを呼び出す場合、私はnullオブジェクトパターンを使用していますので、それは問題ではありません。しかし、私は2番目のテスト実行この場合には、それは文句:

1) Sample instance methods#delete_them deletes folder1 
    Failure/Error: io.should_receive(:delete).with("folder1") 
    Stub received :delete with unexpected arguments 
     expected: ("folder1") 
      got: ("file1") 

すべてのコールが除いて、私が行われていることを確認しようとしているものをを無視しなければならないことを示すための方法はありますか?

答えて

0

このコードはうまくコンパイルされます。私の問題を引き起こしていたもう一つの問題でした。

関連する問題