簡體   English   中英

與Rspec銷毀缺少此請求格式和變體的模板

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM