ruby-on-rails - 我们如何在 rspec 中打印响应正文
问题描述
我正在尝试为我的 meeting_controller.rb 编写一个 rspec 文件,以检查从我的数据库返回的值是否正确。
当我转到 localhost:3000/meeting.json 时,这是我从数据库中获取数据的结果
我的 rspec 文件正在尝试检查是否返回了正确的值。
我在规范下创建了一个名为控制器的文件夹(在我安装了 rspec 之后)并拥有文件 meeting_controller_spec.rb
require 'rails_helper'
# Change this ArticlesController to your project
RSpec.describe MeetingsController, type: :controller do
describe "GET #index" do
# check index
it "returns a success response" do
get :index
puts response.body
expect(response).to have_http_status(:ok)
end
end
end
我试图打印响应正文,但没有返回任何内容。有没有办法做到这一点?
(base) adam-a01:reservation adrianlee$ rspec
.
Finished in 0.0892 seconds (files took 12.15 seconds to load)
1 example, 0 failures
顺便说一句,这是我的 meeting_controller.rb
class MeetingsController < ApplicationController
before_action :set_meeting, only: [:show, :edit, :update, :destroy]
# GET /meetings
# GET /meetings.json
def index
@meetings = Meeting.all
@meeting = Meeting.new
end
end
更新:我也尝试了下面建议的这种方法,但它仍然不起作用
# Change this ArticlesController to your project
RSpec.describe MeetingsController, type: :controller do
describe "GET #index" do
# check index
it "returns a success response" do
get :index
raise response.body
expect(response).to have_http_status(:ok)
end
end
end
这是引发的错误失败:
1) MeetingsController GET #index returns a success response
Failure/Error: raise response.body
RuntimeError:
# ./spec/controllers/meeting_controller_spec.rb:10:in `block (3 levels) in <top (required)>'
解决方案
如果您出于调试目的尝试获取此值,则应使用byebug
或pry
gems。
如果您选择 byebug,请将其添加到gem 'byebug'
测试环境中的 gemfile 中。运行bundle install
,然后你就可以在你的测试中使用它
所以替换puts
为byebug
describe "GET #index" do
# check index
it "returns a success response" do
get :index
byebug
expect(response).to have_http_status(:ok)
end
end
现在在控制台上,您就在那里。只需键入response.body
并enter
打印它的值。完成后,只需键入c
然后enter
释放控制台 e 继续您的测试。
还可以在此处查看有关使用 byebug 进行调试的更多信息
推荐阅读
- java - 如何在 dropwizard 项目中启动时运行 Liquibase 迁移?
- c# - Semaphoreslim 是否应该在控制器中而不是在链中的更下方?
- c# - 如何获取进程列表并将它们存储在 ListBox 中,每次进程列表更改时更改 ListBox
- image - overlay2 如何将容器关联到存储合并内容的文件夹
- node.js - 节点js删除数组数据的功能
- android - 在没有用户交互的情况下拨打电话 android
- php - 在 Woocommerce 单一产品页面中移动库存可用性位置
- python - 值错误 - Python Django
- jquery - 我想要手机和电脑都不允许字符只有数字允许
- javascript - Pug/Jade 和内联 javascript 计算