2016-10-18 7 views
1

내 앱은 현재 세션에 대한 일부 정보를 localStorage에 저장합니다. 따라서 모든 테스트 파일의 각 단일 테스트 전후에 localStorage을 지우는 테스트가 필요합니다. 각 테스트 파일 대신 beforeEach 또는 afterEach 콜백을 전역으로 정의 할 수 있습니까?ember qunit 테스트를위한 전역 beforeEach/afterEach

답변

2

우리는 거의 같은 이유로 ember-qunit의 module, moduleFormoduleForComponent을 감쌌다. 그리고 우리는 ember-qunit 대신에 래퍼를 가져 왔습니다.

또 다른 제안은 localStorage를 서비스로 래핑하는 것입니다. 이 서비스를 제외한 localStorage에 절대 액세스하지 마십시오. 따라서 테스트에서 모의 ​​구현을 사용할 수 있습니다.

업데이트 :이 실현되는 방법

:

import { moduleFor, moduleForModel, test, only, setResolver } from 'ember-qunit'; 
import { moduleForComponent as qunitModuleForComponent } from 'ember-qunit'; 

function moduleForComponent(name, description, callbacks) { 
    //our implementation that wraps "qunitModuleForComponent" 
    //eg. init commonly used services vs. 
} 

export { 
    moduleFor, 
    moduleForComponent, 
    moduleForModel, 
    test, 
    only, 
    setResolver 
}; 

장점 :

  • 새로운 방법을 추가하는 코드 중복
  • 중앙 집중화 단위 테스트 관리
  • 쉬운 방지 관례 요구를 위해, 예컨대 : moduleForValidatableComponent, moduleForLocalStorage

단점 : 생성

  • 엠-CLI는 그 ember-qunit를 가져 테스트한다. 개발자는 import 문을이 래퍼로 변경해야합니다. 때때로 잊혀지기도했습니다. (테스트가 실패하면 개발자는 import 문을 변경해야한다는 것을 기억합니다.)
  • 일부 테스트의 경우 줄 바꿈이 필요하지 않습니다.
+0

서비스와 함께 localStorage를 포장하는 것에 대한 팁을 주셔서 감사합니다. 그러나 나는 아직도이 특징이 나의 현재의 특정한 필요 이상으로 유용하게 사용될 수 있다는 점을 감안할 때 그 ember-qunit의 방법을 포장하는 것에 대해 언급 한 것을 선호한다. 랩핑이 어떻게 작동하는지 자세히 설명해 주시겠습니까? – Ernesto

+0

@Ernesto 업데이트 – ykaragol