35

このモジュール (2) のテスト (1) を実装しようとしています。
私の目的は、特定のイベントがトリガーされたときにコレクションがフェッチされるかどうかを確認することです。
(2)の私のコメントからわかるように、メッセージが表示さ Error: Expected a spy, but got Function.
れますモジュールは機能しますが、テストは失敗します。何か案は?


(1)

// jasmine test module

describe('When onGivePoints is fired', function () {
    beforeEach(function () {
        spyOn(this.view.collection, 'restartPolling').andCallThrough();
        app.vent.trigger('onGivePoints');
    });
    it('the board collection should be fetched', function () {
        expect(this.view.collection.restartPolling).toHaveBeenCalled();
       // Error: Expected a spy, but got Function.
    });
});

(2)

// model view module
return Marionette.CompositeView.extend({
    initialize: function () {
        this.collection = new UserBoardCollection();
        this.collection.startPolling();
        app.vent.on('onGivePoints', this.collection.restartPolling);
    },
    // other code
});
4

3 に答える 3

4

私も同じ問題を抱えていましたが、関数呼び出しで引数を渡すことで解決しました。次に、このようにテストケースを書く必要がありますit

var data = {name:"test"}
spyOn(UsersBoardCollection.prototype, "restartPolling").and.callThrough();
UsersBoardCollection.prototype.restartPolling(data);
expect(UsersBoardCollection.prototype.restartPolling).toHaveBeenCalled();
于 2015-12-17T05:07:48.920 に答える
0

2 つのバージョンの sinon をロードしたか、sinon-jasmine を正しく初期化していなかった可能性があるため、このバグが発生しました。仕様のセットアップで sinon を明示的にロードし、次に sinon jasmine をロードすると、正しく動作し始めました。

于 2016-09-18T23:19:44.490 に答える