我在我的控制器中有一個稱爲clone
的規範,其中我接收用戶並克隆重複的用戶。如何在控制器中測試特定方法
我需要做的就是我的控制器內(我的模型是player
等控制器player_controller.rb
,我需要測試下面列出的具體方法。
def clone
new_player = @player.dup
new_player.id = nil
new_player.serial = nil
new_player.name = "Copy of #{@player[:name]}"
end
describe '#clone' do
it 'creates a clone of an existing player' do
new_player = player.dup
end
end
知道我在我的規格做的是鏡像控制器中方法的第一行,因此它爲我創建了一個新的播放器,但它不更新規範的附加功能,如名稱。這就是我遇到的問題。在我的控制器內專門調出一個方法?
我試過了
new_player = player.controller.send(:clone)
以及
new_player = player.(:clone)
的第一個錯誤不承認clone
而且我收到了玩家一個未定義的方法「呼」的第二個錯誤狀態。 (我不太明白那個錯誤)
有人會知道如何把那個人拉出來讓我測試它嗎?
非常感謝。
該方法不屬於控制器。控制器是協調器。他們協調多個移動部分,但他們自己幾乎不做任何工作(「胖胖的模特,瘦削的控制者」學派)。如果你遵循這一點,你的控制器中就不會有任何值得測試的代碼,並且不會被rails或其他gem測試過。所以是的,將克隆邏輯提取到一個ServiceObject(或其他東西)中,這將是微不足道的測試。 –