2014-11-12 1 views
2

비동기 코드 조각을 테스트하려고하지만 슬프게도 난 애매한 오류 코드가 표시되고 문제가 있습니다. 테스트는 브라우저에서 미세하지만에 phantomjs 결과에서 실행 실행 :mocha-phantomjs에서 비동기 테스트를 실행하려고하면 스크립트 오류 (: 0)가 발생합니다.

Uncaught Script error. (:0) 

테스트가 requirejs 모듈로 기록되고 다른 모듈에 대한 종속성이 있습니다. 브라우저에서 제대로 작동한다고 말했듯이 비동기 테스트를 수행하지 않으면 모든 것이 작동합니다. phantomjs에서도 문제가 없습니다. 저는 phantomjs 1.9.12와 mocha-phantomjs 3.4.1을 사용하고 있습니다.

define([ "csl" ], function(csl) 
{ 
    describe("CSL", function() 
    { 
     it("isLoggedIn", function(testCompleted) 
     { 
      csl.isLoggedIn().then(function(partner) 
      { 
       chai.expect(partner).to.be.a("object"); 
       testCompleted(); 
      }) 
      .fail(function(error) 
      { 
       testCompleted(error); 
      }); 
     }); 
    }); 
}); 
+0

PhantomJS 1.9.7-15를 사용할 때 나타 납니까? '예'인 경우 PhantomJS 1.9.12는 PhantomJS 1.9.8이 포함 된 npm 패키지이므로 [this] (https://github.com/ariya/phantomjs/issues/12697)가 관련 될 수 있습니다. –

+0

npm 패키지 PhantomJS 1.9.7-15와 같은 문제를 시도했습니다. NPM 1.9.12의 최신 버전을 사용할 때 문제는 계속되지만 테스트 상태가 실패 대신 보류 중으로 바뀝니다. 그래도 여전히 "script error (: 0) error"가 발생했기 때문에 1.9.8 이전에 유령 버전을 사용해야합니까? –

+0

제 경우에는 동일한 출처의 모든 파일을 제공하는 것이 도움이되었습니다. CDN 또는'file :'scheme. 대신 단일 서버의 모든 스크립트를 제공하십시오. 또한 https://github.com/mochajs/mocha/issues/165를 참조하십시오. –

답변

3

비동기 함수에서 예외가 발생하면 mocha가 생성하는 오류이며 chai.expect는 AssertionError를 throw 할 수 있습니다.

it("should fail async with good error", function(done) { 
     window.setTimeout(function() { 
      if ("" == "") return done(new Error("Async error message")); 
      done(); 
     }) 
    }) 

    it("should fail async with exception", function(done) { 
     window.setTimeout(function() { 
      try { 
       "".should.not.equal(""); 
      } 
      catch (e) { 
       return done(e); 
      } 
      done(); 
     }) 
    }) 

을 : 당신은 예외가 아닌 콜백을 통해 오류를보고 할 필요가

it("should fail async", function(done) { 
     window.setTimeout(function() { 
      "".should.not.equal(""); 
      done(); 
     }) 
    }) 

이 문제를 해결하려면 : 당신은 간단한 시간 제한 브라우저에서 같은 오류를 재현 할 수

문제는 유령 그 자체가 아니며 (테스트를 실패하게 만드는 것 이외에) 테스트 러너와 유령 사이의 연결은 모든 것을 비동기로 만들어 모카 버그를 유발합니다.