Как отладить рендеринг базового представления И почему этот тест не пройден?Тестирование простого поиска - скриптовая ссылка - PullRequest
0 голосов
/ 22 ноября 2018

Вот близкое приближение моего локального кода: https://jsfiddle.net/gurnoors/xpvt214o/948097/ Скрипка работает, но точный код в моей локальной среде (вставленный ниже) не работает:

describe('policyReviewsSearch', function() {
      var view;
      beforeEach(function() {
        view =  new PolicyReviewListConsolidatedView({
                  collectionData: policyReviewModelsForSearch,
                  queueItem: queueItemModel
        });
        view.render();
      });

      afterEach(function() {
        view.remove();
      });

      // ------------------> fails
      it('should filter down to only show the quality label on search input q', function() {

        view.$(document).ready(function(){
          view.$('#policy-review-search').val('q');
          view.$('#policy-review-search').trigger('keyup');

          var searchResults = view.$('#policy_reviews_list_consolidated > table > tbody tr.policy-review-consolidated:visible');

          console.log("searchResults: " + searchResults[0]);  // undefined
          console.log("searchResults.length " + searchResults.length);  // returns 0; expected 1

          var test = $('#policy_reviews_list_consolidated');
          console.log("test: " + test[0]);  // undefined

          console.log($);  // okay

          expect(searchResults.length).toEqual(1);  // 0
          var policyInSearchResults = searchResults.find('td:first').text().toLowerCase(); // undefined
          expect(policyInSearchResults).toEqual('quality');

        });
      });

      // passes
      it('should hide all rows on search input zyx123', function() {


          view.$('#policy-review-search').val('zyx123');
          view.$('#policy-review-search').trigger('keyup');
          var searchResults = view.$('#policy_reviews_list_consolidated > table > tbody tr.policy-review-consolidated');

          console.log("zyx123 - searchResults: " + searchResults[0]);  // okay
          console.log("zyx123 - searchResults.length " + searchResults.length);  // 4

          searchResults.each(function() {
            var isHidden = $(this).is(":hidden");
            expect(isHidden).toEqual(true);
          });


      });


    });  // end describe(policyReviewsSearch)

Я пытался обернуть тест в $(document).ready в нескольких местах, но, похоже, это не сработало.

У меня есть несколько вопросов, чтобы упростить отладку:

  • Есть ли способ просмотреть (как в отладчике / консоли Chrome), что визуализируется тестами Jasmine.
  • keyup должен (и делает) запускать search функция.Как мне сделать следующее:

//...
view.$('#policy-review-search').val('q');
view.$('#policy-review-search').trigger('keyup');

// how to do this:
// wait for search function for finish
var searchResults = view.$('#policy_reviews_list_consolidated > table > tbody tr.policy-review-consolidated:visible');
// ...

Я читаю статьи о JS-событиях, магистрали, jquery и тесте Jasmine и буду рад услышать некоторые рекомендации (книги / курсы / статьи)

Спасибо!

...