2010-03-22 3 views
0

contexte "réponse est correcte" faireComment supprimer la duplication de RSpec

before(:each) do 
    @answer = stub_model(Answer, :correct => true).as_new_record 
    assigns[:answer] = @answer 

    render "answers/summarize" 
end 

it "should display flashcard context properly" do 
    response.should contain("Quiz") 
end 

it "should summarize results" do 
    response.should contain("is correct") 
end 

fin

contexte "réponse est incorrecte" ne

before(:each) do 
    @answer = stub_model(Answer, :correct => false).as_new_record 
    assigns[:answer] = @answer 

    render "answers/summarize" 
end 

it "should display flashcard context properly" do 
    response.should contain("Quiz") 
end 

it "should summarize results" do 
    response.should contain("is incorrect") 
end 

fin

Comment puis-je éviter de répéter le bloc suivant dans les deux contextes ci-dessus?

it "should display flashcard context properly" do 

    response.should contain("Quiz") 

fin

Répondre

0

Vos spécifications décrivent le comportement que vous attendez de votre code - ce montant de la répétition est ok.

Si cela devient incontrôlable, utilisez différents contextes pour isoler différentes attentes. Par exemple, vous pouvez factoriser ces attentes dupliquées dans un nouveau contexte qui teste simplement la page, quelle que soit la réponse.

0

Si vous voulez vraiment terminer certains de vos tests, vous pouvez le faire comme ceci:

def answer_tests 
    it "should display flashcard context properly" do 
    response.should contain "Quiz" 
    end 

    it "should do be awesome" do 
    response.should be_awesome 
    end 
end 

context "answer is correct" do 
    answer_tests 

    it "should summarize results" do 
    response.should contain "is correct" 
    end 
end 

context "answer is incorrect" do 
    answer_tests 

    it "should summarize results" do 
    response.should contain "is incorrect" 
    end 
end 

Comme vous pouvez le voir, ce qui est vraiment pratique lorsque vous avez plus d'un test que vous souhaitez envelopper dans une méthode.

Questions connexes