2013-10-31 3 views
1

EDIT : 을 alert으로 변경하고 속성이 getInterface 인 것을 발견했습니다.Firefox에서이 재스민 테스트가 때때로 실패하는 이유

우리는 코드가 원치 않는 전역 변수를 도입하지 않도록 환경 무결성 테스트를 실시했습니다.

describe('After the program has run', function() { 
    it('no new global variables have been introduced', function() { 
     for (var x in window) { 
      if (window.hasOwnProperty(x)) { 
       if (!testingWindow[x]) { 
        console.log(x); 
       } 
       expect(testingWindow[x]).not.toBe(undefined); 
       expect(window.hasOwnProperty(x)).toBe(true); 
      } 
     } 
    }); 
}); 

이 테스트는 파이어 폭스를 제외한 모든 브라우저에서 전달합니다

var testingWindow = {}; 
for (var x in window) { 
    if (window.hasOwnProperty(x)) { 
     testingWindow[x] = true; 
    } 
} 

는 그리고 우리의 코드를 실행 한 후, 우리는이 테스트를 실행 : 우리의 코드를 실행하기 전에, 우리는 window 객체의 "복사"를 생성 . 더욱 이상한 점은, 나는이 테스트가 console과 함께 실패한 것을 본 적이 없으므로 오류를 "보는"시도는 아무런 의미가 없다. 어떤 도움을 주셔서 감사합니다.

미리 감사드립니다.

답변

2

Firefox 버그 (https://github.com/visionmedia/mocha/issues/380)와 같습니다.

expect의 주위에이 조건을 포장

, 그들은 항상 통과 : 그것은 파이어 폭스처럼 보이는

if (x !== 'getInterface') ... 

처음에 getInterface를 정의하지 않습니다, 그것은 나중에 않습니다. console을 열면 시작 부분에 정의됩니다.

관련 문제