2012-01-09 3 views
8

우리는 최근 jasmine 사양에서 문서화되지 않은 Ember.testing 플래그를 사용하기 시작했습니다.이 플래그는 자동 실행 runloop 기능을 효과적으로 비활성화합니다. 우리는 이것으로 runloops에서 수동으로 코드를 래핑하는 것에 대해 좀 더 명확히해야한다는 것을 알았지 만 스펙을 작성한 방식의 문제점을 강조하고 바인딩이 문서화되는 데 도움이되므로 스펙에서 안정성을 더 많이 부여했습니다. 테스트중인 코드에서 중요합니다.단위 테스트를 위해 Ember.testing = true로 설정하는 것이 좋습니다?

이 기능의 사용법에 대한 공식 라인이 있습니까? 그것은 우리의 애플 리케이션에 꽤 긍정적 인 영향을 미쳤지 만, 대부분의 사람들이 그것을 인식하지 못하는 것 같습니다.

답변

-1

나는 Ember.testing 플래그를 한번도 사용하지 않았습니다. 나는 이것이 어떻게 당신의 스펙에서 더 많은 안정성을 가져 왔는지 듣고 싶습니다. 나는 재 스민에서 엠버 애플 리케이션을 아무런 문제없이 테스트 해왔다.

필자는 Ember 테스트 스위트의 사용법이 Ember.run()이고 필요하다면 Ember.run.sync()인데 성공했다.

+1

안정성은 주로 실행 루프, 실행중인 코드 및 해당 코드에서 어설 션과 관련이있는 개발자를 생각해야하는 것으로 보입니다. Ember 내부의 많은 부분은 현재 실행중인 루프가 있음을 의지하거나 예외를 발생 시키므로 자동 실행 루프가 없으므로 어플리케이션 코드로 호출을 래핑해야하는지 쉽게 알 수 있습니다. –

+2

우리는 때때로 그들이 일관되게 실패 했어야한다고 생각하는 장소에서 때때로 지나간 스펙으로 인해 간헐적 인 실패가있었습니다. Ember.testing = true로 설정하면 이러한 사양이 항상 실패합니다. –

7

예, 테스트에 확실히 Ember.testing = true을 설정해야합니다.

Ember.testing이 없으면 runloops가 자동으로 setTimeout으로 예약됩니다. 여기서 불안정한 부분이 나타납니다.

참고 :이 순간, 당신은 Ember.testing을 활성화 할 때, 당신은 반드시 당신이 그것을 큰 소리로 불평하는 것을 잊지 경우

Em.run => obj.set('someProperty', true) 

처럼 Em.run =>와 테스트 코드 라인의 많은 앞에 붙여 결국, 또는 어설 션을 실행할 때 속성/앱 상태가 업데이트되지 않습니다.

아마도 언젠가는 개선 될 것입니다. 그러나 지금은 run 호출로 테스트 코드가 뿌려 지는지 걱정할 필요가 없습니다.

관련 문제