错误 - TypeError:expect(...)。toHaveValue不是函数

时间:2016-10-25 20:32:35

标签: javascript jquery jasmine fixtures jasmine-jquery

我正在学习并尝试使用Jasmine框架测试我的javascript。我的javascript只是将textarea的占位符属性设置为空白。

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

我在textarea的onClick事件上调用此函数。我在Jasmine spec中写下了以下代码 -

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不是函数

我也尝试过 - 期望(placeholderval).toEqual(“”); 但后来我得到了这个错误 - 期望未定义为等于''。

以下是我的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>

我的规范代码有什么问题?如何获得占位符的值,以便我现在可以检查它是否为空白。

1 个答案:

答案 0 :(得分:0)

expect().toHaveValue()不是有效的茉莉花选择器。相反,您可以使用expect().toContain()检查sting或数组是否包含特定值。

您还提到您还面临以下Expected undefined to equal ''。这是因为变量placeholder的值未定义。但是你断言占位符的值是一个空字符串。