由于某些原因,这个挑战感觉完全被淹没了。以下是5.9的首发问题:
新的要求已经出现,我们需要更改我们的API以支持 通过自定义Mime类型进行版本控制。这个新的Mime Type将会发生 被称为Apocalypse,将从特定的请求标题中读取。 让我们从编写一些集成测试开始。
任务1
设置用于版本控制的正确请求标头,其值为 我们新的自定义媒体类型的应用程序/ vnd.zombies.v1 + json。
任务2
断言响应中的Content-Type设置为JSON。
任务3
现在解析响应主体并断言有消息 属性设置为"这是第一版"。检查test / test_helper.rb 辅助选项卡上的文件,用于帮助保存一些辅助方法 时间。
以下是设置test/test_helper.rb
ENV['RAILS_ENV'] = 'test'
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'
class ActiveSupport::TestCase
ActiveRecord::Migration.check_pending!
fixtures :all
def json(body)
JSON.parse(body, symbolize_names: true)
end
end
这是我目前的答案:
class ListingZombiesTest < ActionDispatch::IntegrationTest
test 'show zombie from API version 1' do
get '/zombies/1',{},{'Accept' => 'application/vnd.zombies.v1+json' }
assert_equal 200, response.status
assert_equal Mime::JSON, response.content_type
assert_equal "This is version one", json(response.body)
end
end
我收到错误:
Did not parse the response body
思想?
答案 0 :(得分:0)
最后这个工作了!
class ListingZombiesTest < ActionDispatch::IntegrationTest
test 'show zombie from API version 1' do
get '/zombies/1',{},{'Accept' => 'application/vnd.zombies.v1+json' }
assert_equal 200, response.status
assert_equal Mime::JSON, response.content_type
message = json(response.body)
assert_equal "This is version one", message['message']
end
end