2012-06-21 3 views
4

작동하는 모듈 (Marionette 사용)의 동작을 테스트하고 싶습니다 (1).Marionette.CompositeView를 사용하는 모듈의 UnitTest

이상하게도 js- 모듈 (1)은 작동하지만 Jasmine을 사용하는 단위 테스트 (2)는 실패합니다.

아이디어가 있으십니까?


(1)

/*global define*/ 
define([ 
    'marionette', 
    'tasks/views/item', 
    'text!tasks/templates/list.html', 
    'collections/tasks' 
], function (Marionette, itemView, listTemplate, TaskCollection) { 
    "use strict"; 

    var ListView = Marionette.CompositeView.extend({ 

     initialize: function() { 
      this.collection = new TaskCollection(); 
      this.collection.fetch(); 
     }, 

     template: listTemplate, 

     itemView: itemView, 

     appendHtml: function (collectionView, itemView) { 
      collectionView.$el.find('ul.tasks').append(itemView.el); 
     } 

    }); 

    return ListView; 
}); 

(2)

 // spec file 
     it("should add a new element", function() { 
      // TODO 
      var itemView = new Backbone.View(), 
       collectionView = new Backbone.View(); 
      this.view.appendHtml(collectionView, itemView); 
      expect(this.view.$el.find('ul.tasks').length).toEqual(1); 
      // Expected 0 to equal 1. 
     }); 
+0

당신이 RequireJS와 함께 작동하도록 테스트를 설정 한? 그렇지 않다면, 웹을위한 튜토리얼이 있습니다. 검사에서 어떤 오류가 나옵니까? –

+0

@DerickBailey 내가받는 오류는 'Expected 0 to equal 1'입니다. 나는'this.view.appendHtml (collectionView, itemView);를 실행하면 in (1)과 같은 새로운 요소를 추가해야한다고 생각한다. –

+0

이 동작을 보여주는 jsFiddle을 설정해 주시겠습니까? Marionette, Backbone, Jasmine에 익숙하지 않아서 나 자신을 설정하기는했지만, 시작해야 할 부분이 있다면 작동시킬 수 있다고 생각합니다. – redbmk

답변

3
var itemView = new Backbone.View(), 
    collectionView = new Backbone.View(); 
    this.view.appendHtml(collectionView, itemView); 

미안하지만, 당신이 여기 달성 원하는 작업? collectionView.$el이 비어있는 순간에 collectionView.$el.find('ul.tasks')에 무언가를 추가하는 것 같습니다. 따라서 collectionView.$el.find('ul.tasks')은 아무것도 반환하지 않습니다.

console.log()이를 확인하기 위해 추가

appendHtml: function (collectionView, itemView) { 
    console.log(collectionView.$el.html()); 
    collectionView.$el.find('ul.tasks').append(itemView.el); 
} 
+0

+1 예, 맞습니다. 이 코드를 어떻게 테스트해야합니까? –

+1

좋아, 나중에 예제를 줄 것이다 :). – theotheo

+0

시간 내 주셔서 감사합니다. 예제가 게시 될 때 의견을 게시하십시오. –

관련 문제