RSpec-JSON文本必须至少包含两个八位字节



升级rspec-rails (2.5.2 -> 3.8.1)capybara (2.18.0 -> 3.10.1)后的两个失败规范:

不太确定这里发生了什么。期望值中的文本似乎被截断了?!?

let(:story_attributes) do
{
title:       'Edited title',
description: 'Edited location',
start_year:  '2001',
start_month: 'December',
start_day:   '5',
end_year:    '2001',
end_month:   'October',
end_day:     '10',
is_range:    true,
cover_image: {
url: 'http://placehold.it/edited.png'
}
}
end
... 
within 'section.story-cover' do
expect(page).to have_text 'Edited title'
expect(page).to have_text 'Edited location'
expect(page).to have_text 'December 5th - October 10th, 2001'
end

在第一个失败的示例(如下(中,"编辑的位置"被截断。

在第二个示例expect(page).to have_text 'Edited title Edited location'中,只找到"编辑的标题\n编辑的位置"。

然后是"JSON文本必须至少包含两个八位字节"的问题,这可能是相关的,也可能不是相关的,但在升级rspecrails&水豚.ds

想法?

RSpec Failures:
1) Story editing published edit story
Failure/Error: JSON.parse(response.body)
JSON::ParserError:
A JSON text must at least contain two octets!
# ./app/services/converter/image_service.rb:36:in `post_to_filepicker'
# ./app/services/converter/image_service.rb:18:in `convert_format'
# ./app/services/converter/image_service.rb:11:in `block in convert'
# ./app/services/converter/image_service.rb:10:in `each'
# ./app/services/converter/image_service.rb:10:in `convert'
# ./app/models/images/image.rb:5:in `convert'
# ./app/models/images/image.rb:20:in `enqueue_conversion'
# ./app/services/story/updating_service.rb:14:in `update'
# ./app/controllers/stories_controller.rb:58:in `update'
# ------------------
# --- Caused by: ---
# Capybara::ExpectationNotMet:
#   expected to find text "Edited location" in "Edited titlenLyla HoegerEditedDecember 5th - October 10th, 2001Download"
#   ./spec/features/stories/editing_spec.rb:86:in `block (4 levels) in <top (required)>'
2) Story editing private private story should be read after editing
Failure/Error: JSON.parse(response.body)
JSON::ParserError:
A JSON text must at least contain two octets!
# ./app/services/converter/image_service.rb:36:in `post_to_filepicker'
# ./app/services/converter/image_service.rb:18:in `convert_format'
# ./app/services/converter/image_service.rb:11:in `block in convert'
# ./app/services/converter/image_service.rb:10:in `each'
# ./app/services/converter/image_service.rb:10:in `convert'
# ./app/models/images/image.rb:5:in `convert'
# ./app/models/images/image.rb:20:in `enqueue_conversion'
# ./app/services/story/updating_service.rb:14:in `update'
# ./app/controllers/stories_controller.rb:58:in `update'
# ------------------
# --- Caused by: ---
# Capybara::ExpectationNotMet:
#   expected to find text "Edited title Edited location" in "Edited titlenEdited locat"
#   ./spec/features/stories/editing_spec.rb:115:in `block (4 levels) in <top (required)>'

Capybara 2.x和3.x之间的一个重大变化是,在Capybara 3.x中,文本的返回尽可能接近所显示的内容。这意味着当换行符显示给用户时,换行符现在会包含在返回的文本中——https://github.com/teamcapybara/capybara/blob/master/UPGRADING.md.您需要在spec/features/stories/editing_spec.rb:115将预期文本更改为"编辑标题\n编辑位置",或者如果您不关心换行符,可以使用:normalize_ws选项=>expect(page).to have_text("Edited title Edited location", normalize_ws: true)

最新更新