0
我試圖根據塊的性能更新對象上的實例變量@status
。該塊也會調用另一個類。存根異常,但正常評估(RSpec)
def run
@entries.keep_if { |i| valid_entry?(i) }.each do |e|
begin
unique_id = get_uniqueid e
cdr_record = Cdr.find_by_uniqueid(unique_id).first
recording = cdr_record.nil? ? NullAsteriskRecording.new : AsteriskRecording.new(cdr_record, e)
recording.set_attributes
recording.import
rescue Exception => e
fail_status
end
end
end
fail_status
是更新實例變量:failed
的私有方法。通過打破一些其他的事情,我已經基本驗證了這個代碼的作品,但我也想要一個測試。目前,我有以下內容:
context "in which an exception is thrown" do
before do
@recording = double("asterisk_recording")
@recording.stub(:import).and_raise("error")
end
it "should set #status to :failed" do
# pending "Update instance variable in rescue block(s) of #run"
subject.run
subject.status.should eq :failed
end
end
但是測試總是失敗。 rescue
塊永遠不會被評估(我使用puts
語句進行檢查,當在raise
語句中對硬編碼進行評估時,將對其進行評估)。我使用double
功能錯了嗎?或者我正在通過剔除異常來完成自己,因此rescue
塊永遠不會運行?
我的運氣,這將是簡單的。謝謝!解釋很棒。 –