【问题标题】:Jasmine: TypeError: Cannot read property 'toLowerCase' of undefinedJasmine:TypeError:无法读取未定义的属性“toLowerCase”
【发布时间】:2018-05-17 19:20:20
【问题描述】:

我有一个函数来检查名称是否存在于数组 (names_array) 中。如果存在则返回 true,否则将名称推送到 names_array 并为每个名称创建表行并附加到表中。

使用 Jasmine 我必须测试函数返回的是真还是假。 为此,我正在传递变量 names_array 和 name 的值。 但是代码 $('#add_name').val(); 仍然出现未定义的变量错误;

我要测试的 javascript 代码是...

function check_names(names_array) {
    var name = $('#add_name').val().toLowerCase();
    //check if name is there in names_array if yes return true, if not then return false and push the item to the names_array
    }

我正在使用的 Jasmine 代码..

describe("On Name Create",function (){
var names_array = ["add","bad","sad","dad"];
   it("Check for names",function (){
        var name = "add";
        expect(check_names(names_array)).toBeTruthy();
   });
 });

因为我是 Jasmine 的新手,所以我错过了什么吗?

【问题讨论】:

    标签: javascript unit-testing jasmine


    【解决方案1】:

    您应该首先检查 $('#add_name).val() 是否为空。

    也许你也应该试试 $('#add_name).eq(0).val()

    【讨论】:

    • 感谢您的回复。我知道该错误是由于 $('#add_name').val() 无法获取的。我使用 Jasmine 进行单元测试.. 我不知道如何模拟 $('#add_name').val() 的值 .. 我试过 var name = "add";但它不起作用..
    【解决方案2】:

    您收到此错误是因为 $('#add_name').val() 没有为 toLowerCase() 函数提供任何值。

    确保#add_name,您的 HTML 代码中的这个 id 具有一定的价值。您可以在代码中使用它之前打印它。

    【讨论】:

      猜你喜欢
      • 2021-12-17
      • 2021-11-28
      • 2020-07-23
      • 2020-06-24
      • 2018-10-23
      • 2021-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多