4

モジュールの動作をテストしたいと思います ( 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.
        });
4

1 に答える 1

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);
}
于 2012-06-21T15:46:03.017 に答える