我想测试一个模块(使用Marionette)的行为(1)。
奇怪的是,js-module(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 :(得分:3)
var itemView = new Backbone.View(),
collectionView = new Backbone.View();
this.view.appendHtml(collectionView, itemView);
抱歉,你想在这里完成什么?在我看来,当collectionView.$el.find('ul.tasks')
空洞时,你会向collectionView.$el
追加一些内容。所以collectionView.$el.find('ul.tasks')
什么都不返回,等等。
添加console.log()
以检查:
appendHtml: function (collectionView, itemView) {
console.log(collectionView.$el.html());
collectionView.$el.find('ul.tasks').append(itemView.el);
}