Ruby on rails RSpec-JSON文本必须至少包含两个八位字节
升级Ruby on rails RSpec-JSON文本必须至少包含两个八位字节,ruby-on-rails,json,rspec,capybara,rspec-rails,Ruby On Rails,Json,Rspec,Capybara,Rspec Rails,升级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: 'Decembe
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(第页)。要有文本“编辑的标题编辑的位置”
,其中只找到“编辑的标题\n编辑的位置”
还有一个“JSON文本必须至少包含两个八位字节”的问题,这个问题可能相关,也可能无关,但在升级rspec rails&capybara.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 title\nLyla 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 title\nEdited locat"
# ./spec/features/stories/editing_spec.rb:115:in `block (4 levels) in <top (required)>'
RSpec故障:
1) 故事编辑发布编辑故事
失败/错误:JSON.parse(response.body)
JSON::ParserError:
JSON文本必须至少包含两个八位字节!
#./app/services/converter/image\u service.rb:36:in'post\u to\u filepicker'
#./app/services/converter/image\u service.rb:18:“转换格式”
#./app/services/converter/image_service.rb:11:in'block in convert'
#./app/services/converter/image\u service.rb:10:in'each'
#./app/services/converter/image\u 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/updateing\u service.rb:14:in'update'
#./app/controllers/stories\u controller.rb:58:in'update'
# ------------------
#---原因:---
#水豚::预期未满足:
#预计会在“编辑的标题”中找到文本“编辑的位置\nLyla HOEGEREDITEDDEDDECEmber 5-10月10日,2001下载”
#./spec/features/stories/editing_spec.rb:86:in'block(4层)in'
2) 故事编辑私人故事应在编辑后阅读
失败/错误:JSON.parse(response.body)
JSON::ParserError:
JSON文本必须至少包含两个八位字节!
#./app/services/converter/image\u service.rb:36:in'post\u to\u filepicker'
#./app/services/converter/image\u service.rb:18:“转换格式”
#./app/services/converter/image_service.rb:11:in'block in convert'
#./app/services/converter/image\u service.rb:10:in'each'
#./app/services/converter/image\u 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/updateing\u service.rb:14:in'update'
#./app/controllers/stories\u controller.rb:58:in'update'
# ------------------
#---原因:---
#水豚::预期未满足:
#应在“编辑的标题\n编辑的位置”中找到文本“编辑的标题编辑的位置”
#./spec/features/stories/editing_spec.rb:115:in'block(4层)in'
Capybara 2.x和3.x之间的一个重大变化是,在Capybara 3.x中,文本返回的内容与显示的内容尽可能接近。这意味着换行符现在包含在返回的文本中,而此时它们将显示给用户-。您需要将spec/features/stories/editing_spec.rb:115处的预期文本更改为“编辑的标题\n编辑的位置”,或者如果您不关心换行符,则可以使用:normalize_ws
选项=>expect(第页)。要有_文本(“编辑的标题编辑的位置”,normalize_ws:true)
请提供您的规格和相关代码,并非每个人都熟悉不同版本之间如此具体的更改。非常感谢。我补充了一些细节,但在我看来,期望是相当普通的。我想还有别的事吗?!?这太棒了!谢谢使用RSpec和Capybara的最终文件来源在哪里?在我搜索这个问题的解决方案时,我从来没有找到过normalize_ws
。文档是最好的信息来源,History.md文件是更改列表。有一个github链接的gitter页面用于讨论事情,或者只在这里发布,有人会在合理的时间内回答。