2

機能性: ユーザーは、レクチャーに入るために入力フィールドにレクチャー コードを入力する必要があります。ランディング ページで、ユーザーがレクチャー コードを入力しているときに、コードが正しいかどうかを確認し、正しい場合は「btn-enter-lecture」を緑色にします。

'keyup #lecture-code-input' : function() {
    var possibleLectureID = $('#lecture-code-input').val();
    var possibleLecture = Lectures.findOne({lectureCode: possibleLectureID});
    if(possibleLecture){
        $('#btn-enter-lecture').addClass('btn-success');
        $('#btn-enter-lecture').removeClass('disabled');
    }
    else {
        $('#btn-enter-lecture').removeClass('btn-success');
        $('#btn-enter-lecture').addClass('disabled');
    }
}

この機能を jasmine でテストするには、レクチャー コードを入力フィールドに貼り付け、jquery でイベントをトリガーしてみます。しかし、これは隕石イベントを呼び出しません。

describe("'Enter Class' button", function() {
    it("turns green when there is a lecture with this lecture code", function(done) {
        $('#lecture-code-input').val(lectureCode);
        $('#lecture-code-input').trigger('keyup');
        var interval = setInterval(function() {
            if(!$('button#btn-enter-class').hasClass('disabled')){
                clearInterval(interval);
                expect($('button#btn-enter-class').hasClass('btn-success')).toBe(true);
                done();
            }
        },5);
    });
});

この流星テンプレート イベントをトリガーして、後でボタンが緑色に変わるかどうかをテストするにはどうすればよいですか?

コード: https://github.com/minden/rewind/commit/cac61ecc3da3014548ad4ec9d1ceb2fd49bb265c

4

2 に答える 2

0

このチュートリアルを確認してください: https://doctorllama.wordpress.com/2014/09/22/bullet-proof-internationalised-meteor-applications-with-velocity-unit-testing-integration-testing-and-jasmine/

「.registerForTutorial」まで下に移動します。

次のように表示されます。

var data = new Tutorial();

spyOn(data, "registerStudent");
spyOn(Blaze, "getData").and.returnValue(data);

Template.tutorials.__eventMaps[0]["click .registerForTutorial"].call({templateInstance: function() {}}, {preventDefault : function() {}});

expect(data.registerStudent).toHaveBeenCalled();
});

それがあなたが探しているものだと思います。テンプレートを指定する必要があります。

于 2015-09-10T15:00:19.637 に答える
0

リーダーボード テストのサンプルもご覧ください。

ここにリンクからのスニペットがあります

Tinytest.add('Template.leaderboard [click input.inc] event', function (test) {

  //updates the player score by 5 when input.inc is clicked
  Session.set('selected_player', 1234);
  Players.update = function (selector, options) {
      test.equal(selector, 1234);
      test.equal(options.$inc.score, 5);
  };
  Template.leaderboard.fireEvent('click input.inc');
});
于 2015-09-10T15:56:44.713 に答える