2017-02-20 18 views
2

Я заметил, что вы при написании тестов жасмин единицы, как правило, формат:Использование JQuery селекторы в ожидать в жасмин

expect($('#foo')).toHaveValue('#bar'); 

Но в последнее время я обнаружил случайно, что следующее работает:

expect('#foo').toHaveValue('#bar'); 

Ожидается ли такое поведение? Кажется, это лучший способ написать мои ожидания, но я никогда не видел эти записи раньше, и я хочу быть уверенным, что я не злоупотребляю чем-то.

Может ли кто-нибудь подтвердить, что это способ пойти или направить меня к любой документации по этому вопросу?

(я использую jasmine jquery library)

ответ

1

Я играл немного с этим. Похоже, он действительно работает, имея некоторые особенности.

Я пытался что-то вроде:

expect('.search-form').toBeInDOM(); 
expect('.search-form').toEqual('div'); 
expect('.search-form').toContainElement('.search-form__footer'); 
  • первый проходит и не может истинно при переходе к .not.toBeInDOM();
  • третий выглядит так же - это поистине терпит неудачу меняется в некоторой плохой селектор для toContainElement
  • второй из них является проблемой из-за двусмысленности: '.search-form' можно рассматривать как как строку, так и селектор.

бы очень кратко рассмотрим в исходный код, он выглядит любит matchers действительно решить ожидание фактического как селектор (пример from):

toBeInDOM: function() { 
    return { 
     compare: function (actual) { 
     return { pass: $.contains(document.documentElement, $(actual)[0]) } 
     } 
    } 
    }, 

Хотя я не смог найти каких-либо признаков таких способностей в their docs, тоже. Тем не менее исходный код - это исходный код))), и он говорит, что он говорит. И теперь он говорит, что будет рассматривать фактическое значение для expect как селектор.

+0

Я предполагаю, что имеет смысл, что библиотека, которая предоставила jquery matchers, также предоставила это. Большое спасибо за понимание! –