Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RSpec-JSON文本必须至少包含两个八位字节_Ruby On Rails_Json_Rspec_Capybara_Rspec Rails - Fatal编程技术网

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页面用于讨论事情,或者只在这里发布,有人会在合理的时间内回答。