2016-10-17 5 views
1

저장소 서비스를 사용하는 작업을 수행하는 구성 요소를 만들었습니다. 통합 테스트에서 어떻게이 작업을 스터핑 할 수 있습니까? 이 구성 요소의 템플릿에서엠버에서 구성 요소의 동작을 스텁하는 방법은 무엇입니까?

// app/components/invoice-form.js 
export default Ember.Component.extend({ 
    actions: { 
    loadPartners() { 
     let self = this; 
     this.get('store').findAll('partner').then(function(partners) { 
     self.set('partners', partners); 
     }); 
    } 
    } 
}); 

내가 아이 컴퍼넌트에 폐쇄로이 작업 통과 : 내 통합 테스트에서

{{button-confirmation text="Are you sure?" onConfirm=(action "loadPartners")}} 

을, 평소

this.render(hbs`{{invoice-form}}`); 

액션 loadPartners과 같은 구성 요소를하지 않는 렌더링 구성 요소 도우미에 인수로 전달됩니다. 그것의 정적 인 구성 요소의 동작.

그렇다면 통합 테스트에서 loadPartners 액션을 스텁하는 방법에 대해 궁금한 점이 있습니까?

답변

2

통합 테스트에서는 구성 요소의 내부 부분을 변경하면 안됩니다. 대신에 구성 요소의 종속성 구현을 변경해야합니다.

이 경우에는 store을 스텁해야합니다. See 스터브하는 방법 store.

Ref from Guide

+0

어떻게'store'를 삽입합니까? [twiddle] (https://ember-twiddle.com/7b868c31e43064c20f6e95991a53f353?openFiles=components.my-component.js%2Ctemplates.components.my-component.hbs)에서 구성 요소 정의를 볼 수 있습니까? – ykaragol

+0

실제로 구성 요소에 저장소를 삽입하거나 액세스해서는 안됩니다. 경로에서만 액세스해야합니다. – ykaragol

+1

IMO 구성 요소의 상점에 액세스해도 괜찮지 만 그렇게해야하는 것이 좋습니다. – AlexMA

관련 문제