Ember와 호출기 구성 요소를 테스트하는 것이 다소 익숙합니다. 단순화 된 구성 요소는 다음과 같습니다.엠버 구성 요소 테스트 - 외부 동작을 호출하지 않을 때 단위 테스트 구성 요소의 동작을 어떻게 설명합니까?
export default Ember.Component.extend({
index: 0,
actions: {
next() {
this.incrementProperty('index');
}
}
});
next() 작업이 실제로 예상대로 인덱스 속성을 증가시키지 않는지 테스트하려고합니다. 다음과 같은 단위 테스트를 작성했습니다.
test('next should increment the index by 1', function (assert) {
const component = this.subject();
assert.equal(component.get('index'), 0, 'Index should be 0');
component.get('actions').next();
assert.equal(component.get('index'), 1, 'index should be 1');
});
그러나 "this.incrementProperty는 함수가 아닙니다."라는 오류와 함께 실패합니다. 디버깅, 테스트에서 "this"는 next() 함수 내부에서 구성 요소의 컨텍스트가 아니며 유일한 속성 인 next()가있는 객체입니다.
테스트에서 nextPlace 액션을 호출하는 방법 때문인지 궁금합니다. 이 동작을 실행하는 단추를 클릭하고 UI가 변경되었는지 확인하기 위해 통합 테스트를 작성할 수는 있지만, 테스트 할 때 함수 자체가 예상대로 수행된다는 것은 매우 복잡한 것처럼 보입니다. 이 컴포넌트 (클로저 액션)에 전달 된 액션 인 경우 통합 테스트에서 더미 함수를 설정하고이를 컴포넌트로 전달하고 어떻게 응답하는지 확인할 수있다. 그러나이 행동은 그 행동에 전달 된 행동을 부르지 않습니다.
필자가 테스트하고있는 기능이 정말 기본이지만, 부분적으로는 외부 (구성 요소) 동작을 호출하지 않는 구성 요소에서 동작을 테스트하는 방법을 이해하는 것입니다.