2016-07-07 1 views
0

을 테스트, 내 테스트는 불평 : 내 파일 <code>dances.html.erb</code>에서

Failures: 

    1) Creating dances creates a new dance with non-javascript data 
    Failure/Error: visit '/dances/new' 

    Capybara::Poltergeist::JavascriptError: 
     One or more errors were raised in the Javascript code on the page. If you don't care about these errors, you can ignore them by setting js_errors: false in your Poltergeist configuration (see documentation for details). 

     ReferenceError: Can't find variable: $ 
     ReferenceError: Can't find variable: $ 
      at http://127.0.0.1:33842/dances/new:81 in global code 

내가 잘못된 HTML 코드가 보이는 생각

<script> 

    $("#choreographer-autocomplete").autocomplete({ 
    source: <%= a_to_safe_str(Choreographer.all.map &:name) %>, 
    autoFocus: true, 
    minLength: 0 
    }); 
    $("#start-type-autocomplete").autocomplete({ 
    source: ["improper","Becket","Becket ccw","four face four","square dance","indecent"], 
    autoFocus: true, 
    minLength: 0 
    }); 
</script> 

등 '$'에 대한 불쾌한 전화가 왔습니다. JQuery가로드되지 않는다고 생각합니까? 내가 그들을 싹둑 경우 , 그 다음 오류는 다음과 같습니다

Failure/Error: JSON.parse self.figures_json 

ActionView::Template::Error: 
    784: unexpected token at '{{toJson(figures.arr)}}' 

그 핸들은 각도 것입니다. Angular도로드되지 않습니까?

여기 내 레일 application.js있어 :

//= require angular 
//= require jquery 
//= require bootstrap-sprockets 
//= require jquery_ujs 
//= require_tree . 

//= require jquery-ui/autocomplete 
//= require angucomplete-alt 

이 현실 세계에서 잘 작동, 그냥이 테스트에서.

본문 html이 실행되기 전에이 JS 라이브러리를로드하려면해야 할 일이 있습니까?

+0

실행중인 phantomjs의 버전은 실제 환경에서 작동한다고 말하면 dev 환경이나 생산 환경에서 무엇을 의미합니까? –

+0

개발 환경. 나는 생산을 시도하지 않았다. phantomjs (2.1.1.0) –

답변

1

최신 PhantomJS를 실행하고 있기 때문에 가장 큰 원인은 JS 파일 중 하나에 오류가 있다는 것입니다. 개발 환경과 테스트 환경의 큰 차이점은 테스트 환경에서 레일이 모든 JS 파일을 함께 연결한다는 것입니다. 즉, 한 파일의 오류로 인해 JS의 나머지 부분이 처리되지 않을 수 있습니다. dev 모드에서 그들은 모두 분리되어있어서 하나의 에러가 다른 것들이 처리되는 것을 멈추지 않습니다. 브라우저 콘솔 로그에서 오류를 확인하고 오류가 수정되었는지 확인하십시오.

+0

phantomjs (2.1.1.0) –

+0

@DaveMorse 이미 실행중인 2.1.1 이후 응답을 업데이트했습니다. –

+0

스크립트가 js 오류없이 실행됩니다. 이 파일의 변형이 JS 테스트에서 실행되고 $() 호출 및 {{}} 호출을 완료하고 브랜치가 정상적으로 실행되는 또 다른 분기가 있습니다. 실망 스럽지만, 적어도 나는 그걸 깨뜨렸다. –

관련 문제