我正在構建一個非常基本的測試,以檢查是否在關係中創建一個對象。 Website has_many languages
。我有方法add_language
接收一個ID數組並添加它們。優雅的方式來測試新的對象創建
這是我的一些測試:
describe '#add_languages' do
subject{ build(:website) }
it 'return nil if no language is added' do
expect(subject.add_languages []).to be_nil
end
it 'adds one single language' do
languages_ids = [Language.last.id]
original_count = subject.languages.count
subject.add_languages languages_ids
expect(subject.languages.count).to eq(original_count + languages_ids.count)
end
it 'adds multiple languages' do
languages_ids = Language.limit(3).pluck :id
original_count = subject.languages.count
subject.add_languages languages_ids
expect(subject.languages.count).to eq(original_count + languages_ids.count)
end
end
我不喜歡的是
1)代碼被複制 2)我不喜歡使用eq
這一點,但不確定如何使用其他匹配器
什麼是編寫這些測試的優雅方法?
你可以在接收數組language_ids的描述中定義一個函數嗎?通過這種方式,您可以通過簡單地調用該函數來重用代碼。我99%確定紅寶石,ROR會讓你做到這一點。 – corvuszero