【发布时间】:2018-06-18 20:58:08
【问题描述】:
我有一个带有聊天功能的 Ruby on Rails 应用程序。用户创建一个聊天,ActionCable 更新用户端的页面。如果用户想删除 Chat,ActionCable 会在用户端删除 Chat。一切正常。但是如果我为此编写测试,则测试失败。 这是我的控制器。
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:一个空白屏幕。由于您是在 Web 浏览器中加载它,我们假设您希望实际呈现一个模板,而不是什么都没有,所以我们显示一个错误是非常清楚的。如果您期望 204 No Content,请继续。这就是您将从 XHR 或 API 请求中获得的信息。试一试。
我不需要渲染或重定向某些内容,因为我使用 ActionCable 更新了页面。 如果我做 redirect_to 某事,测试没问题,但它会重新加载页面。
通过该测试的任何帮助或建议
【问题讨论】:
标签: ruby-on-rails ruby rspec