Ошибка - TypeError: expect().toHaveValue не является функцией

Я просто изучаю и пытаюсь протестировать свой javascript с помощью фреймворка Jasmine. Мой javascript просто устанавливает атрибут заполнителя текстовой области пустым.

function clearPlaceholderTextOnFocus(i) {
    i.placeholder = '';
}

Я вызываю эту функцию для события onClick текстовой области. Я написал ниже код в спецификации Jasmine.

describe("Test suite for clearPlaceholderTextOnFocus",function(){
it("Should set placeholder to blank", function(){

var i=affix('textarea[name="message"][placeholder="write your message here..."]');

clearPlaceholderTextOnFocus(i);

var placeholderval = $('i').attr('placeholder'); 
expect(placeholderval).toHaveValue('');
});

});

Когда я запускаю этот код, дважды щелкнув SpecRunner.html, я получаю следующую ошибку:

TypeError: expect(...).toHaveValue не является функцией

Я также пробовал - expect(placeholderval).toEqual(""); но затем я получаю эту ошибку - Ожидается, что undefined будет равно ''.

Ниже мой файл SpecRunner.html:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Jasmine Spec Runner v2.5.2</title>

  <link rel="shortcut icon" type="image/png" href="lib/jasmine-2.5.2/jasmine_favicon.png">
  <link rel="stylesheet" href="lib/jasmine-2.5.2/jasmine.css">

  <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.js"></script>
  <script src="lib/jasmine-2.5.2/jasmine.js"></script>
  <script src="lib/jasmine-2.5.2/jasmine-html.js"></script>
  <script src="lib/jasmine-2.5.2/boot.js"></script>
  <script src="lib/jasmine-2.5.2/jasmine-jquery.js"></script>
  <script src="lib/jasmine-2.5.2/jasmine-fixture.js"></script>

  <!-- include source files here... -->
  <script src="src/myfirst.js"></script> 

  <!-- include spec files here...  -->
  <script src="spec/myfirstSpec.js"></script> 

</head>
<body>
</body>
</html>

Что не так с моим кодом спецификации? Как я могу получить значение заполнителя, чтобы проверить, пусто ли оно сейчас.


person Kate    schedule 25.10.2016    source источник


Ответы (1)


expect().toHaveValue() не является допустимым селектором жасмина. вместо этого вы можете использовать expect().toContain(), чтобы проверить, содержит ли жало или массив определенное значение.

вы также упомянули, что столкнулись с приведенным ниже Expected undefined to equal ''. Это связано с тем, что значение переменной placeholder не определено. но вы утверждаете, что значение заполнителя является пустой строкой.

person Sudharsan Selvaraj    schedule 26.10.2016
comment
Как я могу получить значение атрибута «заполнитель» из текстовой области после выполнения моей функции? - person Kate; 26.10.2016
comment
Спасибо, у меня сработало с некоторыми изменениями. Ваш ответ был полезен - person Kate; 26.10.2016