2014-09-04 2 views
1

Pikaday를 사용하여 Ember CLI 프로젝트에서 Ember Datepicker 구성 요소를 만듭니다. 구성 요소 테스트 내에서 사용자 상호 작용을 테스트하는 것은 불가능한 것처럼 보입니다. 누구든지이 작업을 수행하는 방법을 알고 있습니까?수용 Ember CLI가있는 Ember Datepicker 구성 요소 테스트

예를 들어, 구성 요소의 입력을 클릭 할 때 Pikaday 위젯이 표시되는지 테스트하려고합니다. 시험은 다음과 같습니다

import { test, moduleForComponent } from 'ember-qunit'; 

moduleForComponent('datepicker-input'); 

test('is an input tag', function() { 
    equal('INPUT', this.$().prop('tagName')); 
}); 

test('clicking the input opens the pikaday dialog', function() { 
    ok($('.pika-single').hasClass('is-hidden')); 
    click(this.$().find('input')); 
    ok(!$('.pika-single').hasClass('is-hidden')); 
}); 

두 번째 테스트는 ReferenceError: click is not defined로 인해 실패합니다. 나는 내 테스트가 Ember.js 웹 사이트의 예제와 똑같은 것을 할 수있는 한 내가 뭘 잘못하고 있는지 모르겠다. http://emberjs.com/guides/testing/testing-components/#toc_interacting-with-components-in-the-dom

그래서 나는 Ember와 문제가있을 수 있다고 생각한다. CLI. 어떤 도움도 환영합니다. 구성 요소의 사용자 상호 작용을 테스트하는 방법을 제안합니다.

답변

1

DOM에 구성 요소를 추가해야합니다.

test('clicking the input opens the pikaday dialog', function() { 
    $input = this.append(); 

    ok($('.pika-single').hasClass('is-hidden')); 
    click('#your-input').then(function() { 
     ok(!$('.pika-single').hasClass('is-hidden')); 
    }); 
}); 
+0

이것은 Ember.js가 제공하는 통합 테스트 도우미가 아니라 jQuery에서'click' 메소드를 사용합니다. 그래서 내가 성취하고자하는 것은 아닙니다. – stravid

+0

Ok는 통합 테스트 도우미를 사용하도록 고정되었습니다. 요소가 아니라 선택기를 사용한다는 점에 유의하십시오. – Gaurav

+0

제 질문은 문제는 '클릭'통합 테스트 도우미가 정의되어 있지 않다는 것입니다. – stravid

0

난 당신이 App.setupForTesting, 그리고 엠버의 이전 버전에서 테스트를 실행하기 전에 추가로 App.injectTestHelpers를 호출 할 필요가 있다고 생각합니다.

http://emberjs.com/guides/testing/integration/#toc_setup

는 또한 DOM에서 구성 요소 쇼를 만들기 위해 this.append를 호출해야합니다.

0

이 문제는 엠버의 버전이었다에가? Ember AddOn (ember 2.4.3)에서 ember App을 테스트 한 결과 거의 자동으로 생성 된 구성 요소 테스트로 테스트했습니다.

import { moduleForComponent, test } from 'ember-qunit'; 
import hbs from 'htmlbars-inline-precompile'; 

moduleForComponent('image-item', 'Integration | Component | image item', { 
    integration: true 
}); 

test('it renders an image with alt', function(assert) { 
    this.set('src', 'image.png'); 
    this.set('alt', 'grandmother'); 

    this.render(hbs`{{image-item src=src alt=alt}}`); 

    assert.equal(this.$('img').attr('src'), 'image.png'); 
    assert.equal(this.$('img').attr('alt'), 'grandmother'); 
}); 
관련 문제