2015-01-07 49 views
0

首先,我想說我是茉莉花的新人,所以如果問題非常基本,我懇求您的理解。我寫一個測試此文件:JavaScript文件的小茉莉花測試:測試它的最佳方法

define([ 
    'q', 
    'backbone', 
    'marionette', 
    'education/eet/views/destinationview', 
    'education/eet/views/editdestinationview', 
    'education/eet/models/destination', 
    'common/ajaxerrorhandler', 
    'common/alertdialog' 
], function (Q, Backbone, Marionette, DestinationView, EditDestinationView, Destination, AjaxErrorHandler, AlertDialog) { 
    'use strict'; 

    var ReferenceDataController = Marionette.Controller.extend({ 

     initialize: function (options) { 
      this._subjectCompositeId = options.subjectCompositeId; 
     }, 

     getView: function (destinationTypes, editMode) { 
      var self = this, 
       deferred = Q.defer(), 
       destination = new Destination(); 

      destination.fetch({ 
       data: {subjectCompositeId: self._subjectCompositeId} 
      }).done(function() { 
       var view; 
       if (editMode) { 
        view = new EditDestinationView({ 
         model: destination, 
         'destinationTypes': destinationTypes 
        }); 
        view.on('click:saveDestination', self._handleSaveDestination, view); 
       } else { 
        view = new DestinationView({ 
         model: destination 
        }); 
       } 
       deferred.resolve(view); 
      }).fail(function (jqXHR) { 
       deferred.reject(jqXHR); 
      }); 

      return deferred.promise; 
     }, 

     _handleSaveDestination: function() { 
      if (this.model.isValid(true)) { 
       this.model.save(null, { 
        success: function() { 
         Backbone.Wreqr.radio.vent.trigger('education', 'show:destination'); 
        }, 
        error: function (jqXHR) { 
         var userFriendlyErrorString = AjaxErrorHandler.buildDefaultErrorMessage(jqXHR); 
         return new AlertDialog(userFriendlyErrorString); 
        } 
       }); 
      } 
     } 
    }); 

    return ReferenceDataController; 
}); 

的問題是,我不是很確定我如何可以訪問的變量裏面進行測試。我是一個Java測試人員,但從未測試過Javascript,即使在我編寫時也是如此,所以我非常困惑。

任何提示或代碼將被實際讚賞。

謝謝。

回答

1

將Jasmine suite/spec視爲依賴於此模塊的應用程序。

我們盡我們的規格爲RequireJS需要相應的模塊模塊,實例化它 - 有時在模塊級,有時套件(describe)的水平,有時規格(it)的水平。

此時,由於你(在it),其具有對類的實際實例的訪問權限,則調用使用各種的結果爲它的各種方法和測試斷言的形式

expect(something).toBeTruthy(); 

或類似的。

+0

感謝您的幫助ZenMaster。我知道茉莉花測試的結構,但不確定要在這裏測試什麼。你會在這裏做什麼樣的測試?再次感謝 –