2014-01-17 5 views
2

Ruby 1.9.3에서 Rails 3.2.13을 사용하고 있습니다. 나는 다음과 같은 오류가 계속 :Rails-RSPEC 불완전 멀티 바이트 문자 오류

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) 주변의 코드 :

Fabricator :user do 
    username { sequence(:username) { |n| "foo#{n}" } } 
    password 'foobar' 
    password_confirmation 'foobar' 
    email_address "[email protected]" 
    home_phone "123456789" 
    work_phone "456789189" 
    sales_channel 
end 

:

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에 호출되는 날조는 다음과 같습니다 동일한 코드는 API 컨트롤러 용이 아닌 다른 사양에서 호출되며 100 % 시간 동안 작동합니다.

 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' 
+0

검사의 정상이 추가 : RSpec에 완전히 충돌하고 다음과 같은 오류를 제공 이제 다시

모든 도와주세요 http://stackoverflow.com/questions/9167468/rails-3-how-to-handle-pg-error-incomplete-multibyte-character – PriteshJ

+1

@PriteshJ 테스트 중에는 UTF-8이 아닌 문자가있을 수 있습니다. 문제를 일으킨다. – bambinz

답변

0

이 파일 스펙/컨트롤러/api_controllers이 경우/projects_controller_spec.rb

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

Trix는 아이들, 어리석은 토끼를위한 것이지만 그것을 지적 해 주셔서 감사합니다. –

+0

불행히도 도움이되지 않았 음 – bambinz

+0

대답을 업데이트하고 다시 시도하십시오. –