2015-12-11 79 views
2

在Ruby應用程序中,我有一個類(Resque Job),該類使用後一類的ID調用時影響不同類的值的方法。測試另一個類的類級別方法更改屬性

class ResqueKlass 
    def self.perform(id) 
    obj = EditKlass.find(id) 
    obj.update(value: 0) 
    end 
end 

我想用rspec的測試,這個值的確方法

describe 'Something' do 
let(:obj){FactoryGirl.create(:editklass)} 

    scenario 'Change obj value' do 
    ResqueKlass.perform(obj.id) 
    expect(obj.value).to eq(0) 
    end 
end 

內改變它預計0時得到的是在工廠女孩的設定值測試失敗。

我也試過不使用工廠女孩創造'obj'讓,但仍然無法正常工作。我已經在ResqueKlass執行方法中放置了綁定,我可以看到值正在更新。

PS請記住,我是Ruby和rspec的新手。這些不是我正在使用的確切類,其原因是實際的類包含一些敏感數據。

回答

2

發生這種情況,因爲您不重新加載該記錄,因此您的obj仍顯示舊版本。

嘗試重新加載OBJ與obj.reload

describe 'Something' do 
    let(:obj){FactoryGirl.create(:editklass)} 

    scenario 'Change obj value' do 
    ResqueKlass.perform(obj.id) 
    expect(obj.reload.value).to eq(0) 
    end 
end 
相關問題