【发布时间】:2015-08-02 00:25:35
【问题描述】:
我正在使用 Teaspoon 和 Jasmine 为我的 Rails 应用程序编写测试。在大多数情况下,我了解如何测试独立的 js 模块,但我不确定如何测试绑定到 DOM 就绪事件的模块,例如 JQuery 的$(document).ready()。
理想情况下,我可以在需要 JS 文件之前设置一个夹具,但如果我不将 require 作为第一条语句,那么它会被忽略。
通常如何进行测试?
我本来想做这样的事情:
cool.js:
$(document).ready(function() {
$(".stuff").click(stuffClickHandler);
}
cool_spec.js:
fixture.load("fixture_with_stuffs.html");
//= require cool
describe("on ready", function() {
it("should bind handlers to all stuffs", function() {
// test stuffs for handlers
});
});
但这不起作用,因为如果 //= require 出现在任何东西之后,它似乎不会加载 js。
即使我们像$(document).ready(initFunction) 一样将其最小化,我们如何编写一个测试来确保调用initFunction 而不会在require 之前模拟它?
【问题讨论】:
标签: javascript ruby-on-rails unit-testing jasmine teaspoon