2010-03-22 24 views
0

語境 「的答案是正確的」 做如何從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 

語境 「答案是不正確」 做

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 

我如何避免在上述兩個上下文中重複以下塊?

it "should display flashcard context properly" do 

    response.should contain("Quiz") 

回答

0

您的規格說明你從你的代碼所期望的行爲 - 重複這一數額是確定的。

如果失控,請使用不同的上下文來隔離不同的期望。例如,您可以將這些重複的期望因素放入一個新的上下文中,無論Answer是什麼,它都只是測試頁面。

0

如果你真的想換一些你的測試,你可以做這樣的:

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 

正如你所看到的,這是非常方便的,當你有一個以上的測試,你想包裝在一個方法中。