2010-12-01 11 views
0

私はループのためにスピンし、メソッドget_lengthを呼び出すgenerate_from_databaseメソッドを持つmoduleデータベースを持っています。 rspecまたはmochaを使用して、get_lengthがn回呼び出されたかどうかをテストするにはどうすればよいですか?他のメソッドから呼び出されたテストメソッド

Length.should_receive(:get_length).exactly(n).times

詳細情報:http://rspec.info/documentation/mocks/message_expectations.html

答えて

0

この:

mock_length = mock("length") 
Length.should_receive(:new).exactly(n).times.and_return(mock_length) 
mock_length.should_receive(:get_length).exactly(n).times 

が動作するはず

module Database 
class Length < ActiveRecord::Base 
    def get_length(i,j) 
    ... 
    end 
end 
def Database.generate_from_database 
    ... 
for i in 0...size 
    for j in 0...size 
    Length.new.get_length(i+1,j+1)) 
end 
end 
0

あなたはそうのようなものができました。

私はそのようにやった
+0

: Length.should_receive(:get_length)が.exactly(10)は Database.generate_from_database を.timesと私は障害を得た:10を期待して、0を受け取ったが、私は10回get_length generate_from_database呼び出すことを知っています。だからrspecはコールを見ないのですか? – Mario

+0

@Mario。暗闇の中でちょうど撃たれましたが、恐らく名前空間の問題でしょうか? Database :: Lengthを試してください。 –

+0

@マーク。どうもありがとう、しかしgenerate_from_databaseメソッドはクラス長メソッドではありません。おそらくそれは問題です。 – Mario

関連する問題