2016-11-27 77 views
1

我想讓((變量)一個對象,以便我可以在上下文中的不同測試中使用此對象。但是,同時,我想確保在創建對象時不會拋出異常。可能嗎。確保初始化工作正常,但不會引發異常

現在我正在做一個例子。我想let的第一個變種,以便它可以跨範例重用。

first_object= nil 
    expect{first_object= StandaloneG28::Forms::G28.new(attorey_profile,application_manager: appManager)}.to_not raise_exception 
    expect{Pdf::AttributeMappings::FillableG28Applicant.new(first_object).export(false)}.to_not raise_exception 
    expect{Pdf::AttributeMappings::FillableG28Sponsor.new(first_object).export(false)}.to_not raise_exception 

attorney_profile和application_manager是在外部環境中定義的。

回答

1

你可以聲明令塊,然後測試如下:

let(:first_object) { StandaloneG28::Forms::G28.new(attorey_profile,application_manager: appManager)} 

it 'should not throw exception' do 
    expect{ first_object }.to_not raise_exception 
end 

這工作,因爲咱們不評價,直到它的第一個被調用的例子的範圍之內。因此,可以使用expect來評估初始化期間發生的任何異常。

請注意,測試異常/錯誤時,您需要使用大括號作爲except聲明,否則除非甚至沒有機會看到異常。

+0

聰明..從來沒有想過這個,雖然我知道這個懶惰的評價,並在「我想讓」的問題中說。深夜從未幫助任何人。 – Rpant

+1

hehe yep ...自己做了很多次,回答盯着我的臉...這是額外的一雙新鮮眼睛幫助:) – David