1
有一個觀點:在Rails控制器測試JS的行動,響應總是空
# views/users/index.html.erb
<%= link_to 'Destroy', user_destroy_path(user), remote: :true %>
有破壞作用:
# controllers/users_controller.rb
respond_to :js
def destroy
@user = user.find(params.require(:id))
@user.destroy
end
這使得:
# views/users/destroy.js.erb
$('#some_div').html('Bye Bye' + user.name);
我想寫控制器測試測試它
# spec/controllers/users_controller_spec.rb
describe UsersController do
it 'says goodbye' do
delete :destroy, id: user
expect(response.body).to include('Bye Bye #{user.name}')
end
end
但「response.body」始終爲空字符串。爲什麼?如何檢查js響應的內容?
如果不是默認添加也許我不應該在控制器的規格使用呢?也許我應該將這些規格移到水豚測試中,並在控制器測試中確保狀態爲:ok或:bad_request –
是的,這不是真正的控制器。請參閱編輯。 –
但實際上'render_views'處理js.erb文件中的所有嵌入的紅寶石,所以我不需要使用水豚/ poltergeist來使這個測試通過:) –