【问题标题】:Rails- RSPEC incomplete multibyte character errorRails-RSPEC 不完整的多字节字符错误
【发布时间】:2014-01-17 03:29:24
【问题描述】:

我正在使用带有 ruby​​ 1.9.3 的 Rails 3.2.13。我不断收到以下错误:

Failure/Error: @user = Fabricate :user, role_ids: [role.id]
PG::Error:
   incomplete multibyte character
 # ./spec/controllers/api_controllers/projects_controller_spec.rb:6:in `block (2 levels) in <top (required)>'

该错误令人沮丧的是它间歇性地发生。有时我可以运行 10 次测试而不会发生这种情况,而有时我每次都会发生这种情况。

projects_controller_spec.rb 文件第 6 行出现错误的代码如下所示:

require 'spec_helper'

describe Api::V1::ProjectsController do
  before do
    role = Fabricate :data_collector_role
    @user = Fabricate :user, role_ids: [role.id] # this is line 6
    @project = Fabricate.build(:project, proposal: Fabricate(:full_proposal))
    @project.save(validate: false)
    @permission = Fabricate :permission, user: @user, project: @project
    @project2 = Fabricate.build(:project, proposal: Fabricate(:full_proposal))
    @project2.save(validate: false)
    request.env["HTTP_ACCEPT"] = 'application/json'
    request.env['HTTP_AUTHORIZATION'] =   ActionController::HttpAuthentication::Token.encode_credentials(@user.api_key)
  end

上面第 6 行调用的 Fabricator 如下所示:

Fabricator :user do
    username { sequence(:username) { |n| "foo#{n}" } }
    password 'foobar'
    password_confirmation 'foobar'
    email_address "user@example.com"
    home_phone "123456789"
    work_phone "456789189"
    sales_channel
end

在其他规范中调用了相同的代码,这些规范不适用于 API 控制器,并且它们 100% 的时间都有效。

RSPEC 时不时地完全崩溃并给出以下错误:

     Failure/Error: get :show, { id: @project.id }
     ActiveRecord::StatementInvalid:
/Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/formatters/base_text_formatter.rb:182:in `split': invalid byte sequence in UTF-8 (ArgumentError)
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/formatters/base_text_formatter.rb:182:in `dump_failure_info'
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/formatters/base_text_formatter.rb:175:in `dump_failure'
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/formatters/base_text_formatter.rb:19:in `block in dump_failures'
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/formatters/base_text_formatter.rb:17:in `each'
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/formatters/base_text_formatter.rb:17:in `each_with_index'
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/formatters/base_text_formatter.rb:17:in `dump_failures'
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/reporter.rb:98:in `block in notify'
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/reporter.rb:97:in `each'
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/reporter.rb:97:in `notify'
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/reporter.rb:81:in `finish'
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/reporter.rb:36:in `report'
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/command_line.rb:25:in `run'
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/runner.rb:66:in `rescue in run'
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/runner.rb:62:in `run'
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/runner.rb:8:in `block in autorun'

【问题讨论】:

标签: ruby-on-rails ruby ruby-on-rails-3 rspec fabrication-gem


【解决方案1】:

将此添加到文件 spec/controllers/api_controllers/projects_controller_spec.rb 的顶部

# !/usr/bin/env ruby
# encoding: utf-8

【讨论】:

  • 很遗憾没有帮助
  • 更新答案,再试一次。
  • 不幸的是仍然没有运气
  • 我将上面的行添加到项目中的每个 .rb 文件中,但仍然出现错误
  • 我也不认为是这样。链接中的脚本没有机会任何文件。我还在我所有的 .rb 文件上运行了“file --mime”,它们以 ASCII 或 UTF-8 的形式返回,这应该没问题,因为 ASCII 是 UTF-8 的子集。
猜你喜欢
  • 2012-02-28
  • 2011-10-31
  • 1970-01-01
  • 2012-11-01
  • 2011-06-10
  • 1970-01-01
  • 2020-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多