javascript - 如何调用 Meteor 模板事件?

标签 javascript jquery meteor jasmine meteor-velocity

功能:用户必须在输入字段中输入讲座代码才能进入讲座。在登陆页面上,当用户输入讲座代码时,我想检查代码是否正确,如果正确,则将“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 触发该事件。但这不会称为 meteor 事件。

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);
    });
});

如何触发此 meteor 模板事件来测试按钮是否随后变为绿色?

代码:https://github.com/minden/rewind/commit/cac61ecc3da3014548ad4ec9d1ceb2fd49bb265c

最佳答案

查看本教程: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();
});

我认为这就是您正在寻找的。您需要指定模板。

关于javascript - 如何调用 Meteor 模板事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32503871/

相关文章:

javascript - 列过滤器不适用于行分组

mongodb - 如何使用 meteor 将对象数组插入 mongodb?

javascript - Meteor 帐户 - 登录表单更改 HTML 删除下拉 JS

javascript - HTML 图像的相对路径。在 Github 页面上找不到 404

javascript - 向多个元素添加相同的事件监听器

javascript - 在表格完成之前,如何禁用 Stripe 付款请求按钮?

jquery - 弹出窗口内容内的 Bootstrap 切换按钮不起作用

javascript - Jquery - Flot,如何只显示点而不显示线?

javascript - 为什么在分配 DerivedClass.prototype 时使用 Object.create 而不是 new Super

javascript - Meteor.Call 奇怪的行为