Тестирование 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
Другие вопросы по тегам