JQuery Жасмин, светильники не загружены - PullRequest
0 голосов
/ 17 января 2012

Я пытаюсь загрузить свои приборы в spec / category_keyword / Categories.html.Содержимое этого устройства:

Мой тест

$(function() {

  beforeEach(function(){
     keywordsListView = new KeywordsListView({
       el: $("#keywords_list")
     })
  })

 it("should ...", function() {
    expect(keywordsListView.el.attr("id")).toEqual("keywords_list");
 })

})

Тем не менее, keysListView.el не определен, что указывает на то, что устройство каким-то образом не загружено.Я просмотрел набор жасмина в клопе и не увидел ничего, связанного с приспособлением.Я использую жасминовый камень.Нужно ли что-то включать?

Ответы [ 3 ]

0 голосов
/ 02 февраля 2014

Жасмин сам по себе не включает загрузку осветителей, html-репортер дает вам div#jasmine_content, к которому не будет прикасаться жасмин, и вы можете написать html при необходимости.Если вам нужно загружать более сложные приборы, есть другие плагины, которые сделают это за вас.Единственный, который я когда-либо использовал, это jasmine-jquery .С этим вы можете сделать что-то вроде:

$(function() {
  beforeEach(function(){
     loadFixtures('category_keyword/categories.html');
     keywordsListView = new KeywordsListView({
       el: $("#keywords_list")
     });
  });

  it("should ...", function() {
    expect(keywordsListView.el.attr("id")).toEqual("keywords_list");
  });
});

Обратите внимание, что jasmine-jquery ожидает, что ваши приборы будут в spec/javascripts/fixtures, если не настроено иначе, установив jasmine.getFixtures().fixturesPath = <something>

Другая вещь, которую вы можете сделатьdo позволяет backbone создать для вас элемент, не передавая его. Конечно, для этого ваше представление должно будет отображаться самостоятельно, а не полагаться на то, какая разметка генерируется сервером.Это делает ваш взгляд более автономным.

0 голосов
/ 12 мая 2014

После загрузки ваших приборов, вы должны вызывать ваши магистральные функции / метод, чтобы не шпионить за вашими моделями.

А потом вы найдете с загруженным содержимым HTML.

Как:

loadFixtures("/path/to/fixtures.html");         
SpyOnObj.functionname();                        
expect($('body')).toHaveId("{ELEMENT_ID}");

Надеюсь, это поможет вам.

0 голосов
/ 29 января 2012

Глядя на это, я не думаю, что у теста есть доступ к вашей переменной KeywordsListView. Объявите переменную keywordListView над функцией beforeEach и заполните ее в beforeEach, как она у вас есть.

$(function() {

  var keywordsListView;

  beforeEach(function(){
     keywordsListView = new KeywordsListView({
       el: $("#keywords_list")
     })
  })

 it("should ...", function() {
    expect(keywordsListView.el.attr("id")).toEqual("keywords_list");
 })

})
...