2013-10-21 1 views
1

빌드 서버에서 헤드리스 재스민 테스트를 실행하고 결과를 junit 형식으로 출력하도록 레이크 작업을 설정했습니다. 여기에 작업입니다 : RSpec에 2.14헤드리스 재스민 테스트를 레일에서 실행할 때 오류 발생

TypeError: jasmine.getEnv(...).currentSpec is null in http://localhost:34002/assets/jquery.js?body=true (line 1129) 
[email protected]://localhost:34002/assets/jquery.js?body=true:1129              
@http://localhost:34002/__spec__/activity_catalog_search_filters_spec.js:15           
[email protected]://localhost:34002/__jasmine__/jasmine.js:1064         
[email protected]://localhost:34002/__jasmine__/jasmine.js:2096 
jasmine.Queue.prototype.next_/onComplete/<@http://localhost:34002/__jasmine__/jasmine.js:2086 
... LOTS MORE ... 

내가 사용 레일 3.2.13, 자스민 1.3.2, 헤드리스 (headless) 1.0.1 : 나는 이것을 실행하면

namespace :jasmine do                    
    desc "Runs Jasmine tests headlessly and writes out junit xml."         
    task :headless_junit do |t, args|                
    run_jasmine_tests(Dir.pwd)                  
    end                        
end                        

def run_jasmine_tests(output_dir)                 
    require 'headless'                    
    require 'jasmine'                    
    require 'rspec'                     
    require 'rspec/core/rake_task'                 

    output_file = "#{output_dir}/jasmine_results.xml"            

    Headless.ly do                     
    RSpec::Core::RakeTask.new(:jasmine_continuous_integration_runner) do |t|      
     t.rspec_opts = ['--format', 'RspecJunitFormatter', '--out', output_file ]     
     t.verbose = true                    
     t.rspec_opts += ["-r #{File.expand_path(File.join(::Rails.root, 'config', 'environment'))}"] 
     t.pattern = [Jasmine.runner_filepath]              
    end                       

    Rake::Task['jasmine_continuous_integration_runner'].invoke          
    end                        

end                        

나는이 오류가 발생합니다. TypeError: jasmine.getEnv().currentSpec is null

답변

1

문제는 시험이 워싱턴에 있었다 밝혀 : 1 재스민 - jQuery를이 1.5.8

는 나는이 사람이 가지고있는 문제와 유사 할 수 있다고 생각 URL을 DOM에로드하려면 jQuery.get을 사용하십시오. 빈 문자열이 URL로 전달되었습니다 (테스트 작성자가 실제로로드 된 내용을 신경 쓰지 않았으므로) jQuery가 현재 페이지 (재스민 테스트 자체)를 가져 와서 dom에로드합니다. 엄청난 혼돈이 계속되었습니다.

더 흥미로운 점은 우리가 그 점을 이해하는 방법이었습니다. 멋진 레이크 작업이 문제가되지 않았다. 헤드리스 테스트에서 Firefox를 사용하고 크롬에서 수동으로로드합니다.이 오류는 발생하지 않는 것으로 보입니다. Firefox에서 오류가 발생하여 디버거로 원인을 추적하기가 쉽습니다.

그렇다면 ci 테스트가 실패하고 재현 할 수없는 경우 Firefox에서 수동으로로드 해보십시오.

관련 문제