2012-02-05 2 views
0

엠버 컨트롤러가 DOM에 뷰를 올바르게 추가하는지 테스트하고 싶습니다.엠버 또는 새싹 코어 2.0보기

Lead.Controllers.UrlSearch = Ember.Object.extend 
    init: -> 
    @_super() 

    @url_search = Lead.UrlSearch.create() 

    @url_search.set('search_url', 'http://www.bdec-online.com/bd-cmpy/bd-cz.cfm') 

    @view = Ember.View.create 
     controller: @ 
     urlSearchBinding: 'controller.url_search' 
     templateName: 'app/templates/url_search/show' 

    @view.appendTo('#fieldset') 
    console.log($('#url_search_url').length) #0 in console but appears in browser 
    $('#url_search_url').focus() 

내가 다음 $은 ('#의 url_search_url') 요소가 돔에 있는지 테스트 할 : 나는 다음과 같은 엠버 컨트롤러를 가지고있다. 브라우저에 표시되므로 추가 될 예정이지만 향후 어느 시점에 추가됩니다.

I가 다음과 같은 시험 :

describe 'Controllers', -> 
    describe 'UrlSearch', -> 
    it 'should append view', -> 
     expect($('#url_search_url').length).toEqual(1) 

나는 didInsertElement 이벤트가 알고, 내가 어떻게이 상황을 테스트해야이 또는 사용되어야 하는가?

답변

1

Ember는 실행 루프를 통해 "나중에"DOM 조작을 연기합니다. 테스트하려면 Ember.run.end()를 호출하여 실행 루프가 내용을 즉시 실행하도록 할 수 있습니다. 다음은 통과해야합니다

describe 'Controllers', -> 
    describe 'UrlSearch', -> 
    it 'should append view', -> 
     Ember.run.end() 
     expect($('#url_search_url').length).toEqual(1) 

는 일반적으로 당신이 당신의 응용 프로그램 코드에서 실행 루프를 플러시 할 필요가 없습니다 ... 그냥 그렇게 할 준비가되면 엠버 모든 것을 실행하도록 할 수 있습니다. 그러나 테스트 코드에서는 때로는 필요합니다.

+0

당신은 신사이자 학자입니다! 그 때문에 나이에 맞는 머리가 긁혔습니다. – dagda1

관련 문제