Тестирование DOM Ready с чайной ложкой и жасмином
Я пишу тесты, используя Teaspoon и Jasmine для моего приложения на Rails. Я понимаю, по большей части, как тестировать автономные js-модули, но я не уверен, что делать с тестированием модуля, который привязывается к событию DOM ready, как в 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
?
1 ответ
У меня также были некоторые проблемы с этим, лучшее, что я мог придумать, это просто определить функцию для выполнения всех вещей.ready() и вызвать ее из тестов:
cool.js:
var onReady = function() {
$(".stuff").click(stuffClickHandler);
}
$(document).ready(function() {
onReady();
}
cool_spec.js:
//= require cool
fixture.load("fixture_with_stuffs.html");
onReady();
describe("on ready", function() {
it("should bind handlers to all stuffs", function() {
// test stuffs for handlers
});
});
Вы можете включить ваш cool.js в самый верх вашего теста следующим образом:
//= require cool.js