【发布时间】:2016-07-30 16:29:21
【问题描述】:
我正在尝试使用 Devise gem 在 Rails 中构建一个安静的 JSON api,我有以下代码:
users_controller_spec.rb:
require 'rails_helper'
RSpec.describe Api::V1::UsersController, type: :controller do
describe "PUT/PATCH #update" do
render_views
context "when is successfully updated" do
before(:each) do
@user = FactoryGirl.create :user
request.headers['Authorization'] = @user.auth_token
end
it "renders the json representation for the updated user" do
user_response = json_response
expect(user_response[:email]).to eq "newmail@example.com"
end
end
end
我遇到的问题是 response.body 等于一个空字符串,这不是有效的 JSON,因此我不能这样做 JSON.parse(response.body)
我在 SO 的其他地方阅读了包含 render_views 的内容,您可以看到我已经这样做了,但这没有任何区别。
如果您需要更多信息,请告诉我
【问题讨论】:
-
响应成功了吗?打印
response.status。也可以在解析body之前加上expect(response).to be_success -
你可能忘记使用
render json:方法 -
我的应用程序控制器的
create方法中有render json:... -
好的,我在您包含的代码中的任何地方都没有看到
JSON.parse(response.body)...这意味着您没有包含所有相关代码。您能否编辑您的问题并包含所有相关代码?没有控制器的实际代码,我们不能只调试一半(规范)。
标签: ruby-on-rails ruby json rspec devise