2017-01-26 5 views
2

테스트 경로 후크와 행동에 혼란 나는 다음 테스트하는 방법에 조금 혼란 스러워요 :엠버 난 그냥 엠버와 시험을보고 시작하고

1 - 내가 가지고있는 경로가 여기에

후크 있어요 예를 , 단위 테스트 또는 사용자 수락 테스트를 통해 수행해야하는지 잘 모르겠습니다? 후크를 트리거하고 약속을 기다리는 등 어떻게합니까?

/** 
* Model hook. 
*/ 
model() { 
    return this.modelFor('new'); 
}, 

/** 
* AfterModel hook. 
*/ 
afterModel() { 
    /** 
    * Setup provinces. 
    */ 
    return new Ember.RSVP.Promise((resolve) => { 
     const provinces = Ember.A([ 
      Ember.Object.create({ 
       code: 'AB', 
       description: 'Alberta' 
      }), 
      Ember.Object.create({ 
       code: 'BC', 
       description: 'British Columbia' 
      }), 
      Ember.Object.create({ 
       code: 'MB', 
       description: 'Manitoba' 
      }), 
      Ember.Object.create({ 
       code: 'NB', 
       description: 'New Brunswick' 
      }), 
      Ember.Object.create({ 
       code: 'NL', 
       description: 'Newfoundland and Labrador' 
      }), 
      Ember.Object.create({ 
       code: 'NS', 
       description: 'Nova Scotia' 
      }), 
      Ember.Object.create({ 
       code: 'NT', 
       description: 'Northwest Territories' 
      }), 
      Ember.Object.create({ 
       code: 'NU', 
       description: 'Nunavut' 
      }), 
      Ember.Object.create({ 
       code: 'ON', 
       description: 'Ontario' 
      }), 
      Ember.Object.create({ 
       code: 'PE', 
       description: 'Prince Edward Island' 
      }), 
      Ember.Object.create({ 
       code: 'QC', 
       description: 'Quebec' 
      }), 
      Ember.Object.create({ 
       code: 'SK', 
       description: 'Saskatchewan' 
      }), 
      Ember.Object.create({ 
       code: 'YK', 
       description: 'Yukon' 
      }) 
     ]); 
     resolve(provinces); 
    }).then((provinces) => { 
     this.set('provinces', provinces); 
    }); 
}, 

/** 
* Setup controller hook. 
* @param controller the controller 
* @param model The model 
*/ 
setupController(controller, model) { 
    this._super(controller, model); 
    controller.set('provinces', this.get('provinces')); 
} 

2 - 컨트롤러/경로 작업

여기

나는 대부분은 단지 하나 다른 경로 또는 표시 오류 메시지에 가고, 시험 단위해야이 뭔가입니까? 그렇다면 어떻게?

actions: { 
    /** 
    * Go previous step 
    */ 
    back() { 
     this.transitionToRoute('new.step1'); 
    }, 
    /** 
    * Go to next step. 
    */ 
    next() { 
     this.get('model').save().then(() => { 
      this.transitionToRoute('new.step3'); 
     }).catch(() => { 
      this.get('notificationService') 
       .notifyError('common.error.system_error'); 
     }); 
    } 
} 

답변

1

당신은 acceptance tests와 다른 경로 또는 오류 메시지에가는 테스트 할 수 있습니다. 이것은 당신의 루트의 행동과 모든 모델 후크를 커버 할 것입니다.

경로의 동작을 테스트하려면 단위 테스트를 수행하는 것이 좋습니다. 당신은 당신의 길로 행동을 보내고 돌아 오는 것을 볼 수 있습니다. this example에서와 마찬가지로

:

// Now use the routes send method to test the actual action route.send('displayAlert', expectedTextBar);

그것은 당신이 개별적으로 테스트 할 수 있습니다 작은 덩어리들로 코드를 중단하는 것이 좋습니다. 문서에서 "코드를 작은 덩어리 (또는"관심사 ")로 분리하면 테스트를 위해 코드를 더 쉽게 분리 할 수 ​​있으므로 버그를 더 쉽게 잡을 수 있습니다."

경로가 복잡하고 테스트하기 어려워지면 일부 코드를 서비스 등으로 추상화해야한다는 신호 일 수 있습니다. 이렇게하면 테스트가 더 쉬워집니다.

보조 노트로 : afterModel 후크에 개체 배열을 반환하는 것을 확인했습니다. RSVP를 사용하지 않고도 정상적으로 작동합니다.

희망이 있습니다.