2010-12-01 6 views
0

J'ai un module Base de données avec la méthode generate_from_database qui tourne pour les boucles et appelle la méthode get_length. Comment puis-je tester si get_length a été appelé n fois, en utilisant rspec ou mocha?Méthode de test qui a été appelée à partir d'une autre méthode

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 

Répondre

0

Ce:

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

devrait fonctionner.

0

Vous pouvez donc quelque chose comme:

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

Plus d'info: http://rspec.info/documentation/mocks/message_expectations.html

+0

Je l'ai fait comme ça: Length.should_receive (: get_length) .exactly (10) .times Database.generate_from_database et j'ai eu des échecs: on attendait 10, a reçu 0, mais je sais que generate_from_database appelle 10 fois get_length. Alors pourquoi rspec ne voit pas les appels? – Mario

+0

@Mario. Juste un coup dans le noir, mais c'est peut-être un problème d'espace de nom? Essayez Database :: Length. –

+0

@Mark. Merci pour le tir, mais la méthode generate_from_database n'est pas la méthode de longueur de classe .. Peut-être que c'est un problème – Mario

Questions connexes