뉴스 레터 구독을 처리하는 구성 요소를 테스트하려고합니다. submitForm 함수가 성공적으로 숨겨진 입력 클래스를 설정하여 저장했는지 여부를 테스트하려고합니다. 결과가 저장되거나 발생하지 않아서 통합 테스트에서이를 주장 할 수 있습니다.Ember 구성 요소 통합 테스트 : 모델 저장시 inFlight 오류
<div class="ui container row newsletter-form">
<div class="ui inverted segment">
<form class="ui form" {{action "submitForm" on="submit"}}>
<div class="ui stackable grid">
<div class="eleven wide right aligned column">
{{input type='string' value=model.email placeholder=(t 'subscription.email')}}
</div>
<div class="five wide inverted left aligned column">
<button type="submit" class="ui fluid secondary button {{unless model.email 'disabled'}}">
{{t 'button.newsletter'}}
</button>
</div>
<input type='hidden' id="debug" class="{{subscribed}}" />
</div>
</form>
</div>
</div>
그리고 다음은
import Ember from 'ember';
export default Ember.Component.extend({
store: Ember.inject.service(),
displayNotifications: Ember.inject.service(),
didInsertElement() {
this.set('model', this.get('store').createRecord('subscription'));
},
actions: {
submitForm() {
this.get('model').save().then(
(json) => {
this.get('displayNotifications').success({
key: 'subscription.success',
});
this.set('model', this.get('store').createRecord('subscription'));
this.set('subscribed', true);
},
(reason) => {
this.set('subscribed', 'error');
});
}
}
});
가
뉴스 레터 - subscription.hbs의 코드입니다 :
newsletter.subscription.js 다음은
내 코드입니다 여기 내 테스트입니다 : newsletter-subscription-test.jsmoduleForComponent('newsletter-subscription', 'Integration | Component | newsletter-subscription', {
integration: true
});
test('newsletter-subscription: submitting newsletter-subscription sets subscribed to true', function(assert){
this.render(hbs`{{newsletter-subscription subscribed='notSubscribed'}}`);
assert.equal(this.$('#debug').hasClass("notSubscribed"), true, 'before click, debug element has class notSubscribed');
this.$('input[name=subscription-email]').val("[email protected]");
this.$('button[type=submit]').click();
return wait().then(() => {
assert.equal(this.$('#debug').hasClass("subscribed"), true, "after callback of click ran, debug element has class subscribed");
});
});
첫 번째 어설 션이 작동합니다. 하지만 오류가 계속 발생합니다.
✘ 어설 션 실패 : inFlight이 아닌 레코드 만 언로드 할 수 있습니다.
중단 점 분석에서 this.get ('model'). save()가 호출 될 때 발생하는 것으로 나타났습니다. 문제를 해결하려는 시도는 지금까지는 효과가 없었습니다 (예 : 신기루를 사용하여 서버 응답 조롱). 이 컨텍스트에서 Ember 실행 루프에 문제가 있습니까? 예를 들어 어떻게 든 다른 조치를 취해야합니까?
입력 해 주셔서 감사합니다.