2011-10-22 4 views
0

J'écris une spécification pour un objet (Sample) qui appelle la méthode d'un autre objet (IO # delete) un certain nombre de fois.Isolement des spécifications à un appel spécifique d'une méthode

Je veux isoler les essais de cette méthode, mais quand je fais ceci:

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 

Si je l'appelle plusieurs méthodes, il est pas un problème parce que je suis en utilisant le modèle d'objet nul. Cependant, dans ce cas, quand j'exécute le second test, il se plaint:

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") 

Y at-il un moyen d'indiquer que tous les appels doivent être ignorés sauf celui que je suis en train de vous assurer est fait?

Répondre

0

Ce code compile bien. C'était un autre problème qui causait mon problème.

Questions connexes