首先,我想说我是Jasmine的新人,所以如果这个问题非常基本,我请求你理解。我正在为这个文件写一个测试:
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,所以我对它非常困惑。
任何提示或代码都会被实际欣赏。
感谢。
答案 0 :(得分:1)
将Jasmine suite / spec视为依赖于此模块的应用程序。
我们将我们的规范作为 RequireJS 模块,需要相应的模块,实例化它 - 有时在模块级别,有时在套件(describe
)级别,有时在规范({{1 }})level。
此时,由于您(在it
中)可以访问该类的实际实例,您可以调用其各种方法并使用
it
或类似。