我已經抽象出我的模型,以便能夠同時測試多個模型。問題是一些模型有不同的參數。以下面的示例架構。如果定義了參數,則指定一個參數
架構(簡體)
# Table name: cars
#
# id :integer not null, primary key
# hp :integer
# wheels :integer
# Table name: trucks
#
# id :integer not null, primary key
# hp :integer
# wheels :integer
# Table name: boats
#
# id :integer not null, primary key
# motors :integer
# hp :integer
測試
setup do
@models = ['cars', 'trucks', 'boats']
end
test 'something awesome' do
@models.each do |model|
# This works for cars and trucks, not for boats
exemplar = FactoryGirl.create(model, id: 1, hp: 600, wheels: 4)
# A bunch of assertions
end
end
我可以分配id
和hp
於所有車型,但同時汽車和卡車有wheels
,船有motors
。有沒有辦法在create
呼叫本質上說:「如果這種方法定義,然後使用它,如果沒有,然後忽略它」
我希望能夠做的是呼籲exemplar = FactoryGirl.create(model, id: 1, hp: 600, wheels: 4, motors: 2)
並讓它跨越板創建3個對象:
- 車:ID = 1,HP = 600,輪子= 4
- 卡車:ID = 1,HP = 600,輪子= 4
- 船:ID = 1,馬力= 600,馬達= 2