[英]with Rspec destroy is missing a template for this request format and variant
我有一個聊天的Ruby on Rails應用程序。 用戶創建一個Chat,然后ActionCable在用戶端更新頁面。 如果用戶要刪除聊天,則ActionCable會在用戶端刪除聊天。 一切正常。 但是如果我為此編寫測試,則測試將失敗。 這是我的控制器。
def destroy
chat = Chat.find(params[:id])
chat.comments.delete_all
chat.likes.delete_all
id = '#chat-to-delete-id'+chat.id.to_s
chat.delete
ActionCable.server.broadcast 'room_channel',
delete: id
end
這是我的規格
it 'delete a chat' do
sign_in(user)
post :create, params: {chat:{body: 'hello'}}
get :destroy, params: {id: Chat.last.id}
expect(response.status).to eq (200)
end
這是我運行測試時遇到的錯誤。
ActionController :: UnknownFormat:PublicationsController#destroy缺少此請求格式和變體的模板
request.formats:[“ text / html”] request.variant:[]
注意! 對於XHR / Ajax或API請求,此操作通常會以204 No Content響應:白屏。 由於您是在網絡瀏覽器中加載模板,因此我們假設您實際上希望渲染模板,而不是什么,因此我們顯示的錯誤非常清楚。 如果您期望204 No Content,請繼續。 這就是您從XHR或API請求中獲得的。 試一試。
我不需要渲染或重定向某些內容,因為我使用ActionCable更新了頁面。 如果我將redirect_to設置為某項,則測試正常,但會重新加載頁面。
通過測試的任何幫助或建議
如果您使用resources :chat
route helper,那么默認情況下, destroy
路由不會響應GET
請求。 如果您沿rails routes
,將會看到類似的內容
chats GET /chats(.:format) chats#index
POST /chats(.:format) chats#create
new_chat GET /chats/new(.:format) chats#new
edit_chat GET /chats/:id/edit(.:format) chats#edit
chat GET /chats/:id(.:format) chats#show
PATCH /chats/:id(.:format) chats#update
PUT /chats/:id(.:format) chats#update
DELETE /chats/:id(.:format) chats#destroy
因此,您實際使用get :destroy, params: {id: Chat.last.id}
請求是get :destroy, params: {id: Chat.last.id}
show get :destroy, params: {id: Chat.last.id}
嘗試delete :destroy, params: {id: Chat.last.id}
代替
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.