2010-03-22 50 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 

正如你所看到的,这是非常方便的,当你有一个以上的测试,你想包装在一个方法中。