使用JasmineJS测试输入是否为字母数字

时间:2015-11-23 05:36:40

标签: javascript jquery jasmine

我今天的最后一个问题并不是一个问题,我想对我创建的JasmineJS测试代码有所了解,以测试用户是否输入了字母数字。

我有一个名为username:

的HTML输入框
library(dplyr)

equalityMatrix %>%
  t %>%
  as.data.frame %>%
  setNames(c("group", "value")) %>%
  group_by(group) %>%
  summarize(value = list(value))

如果输入是字母数字,我创建了一个Javascript函数来过滤用户输入。

Username: <input type="text" name="username" id="username" class="input" value="testinput" />

在我的JasmineJS文件夹中,我创建了一个服务文件来测试过滤器用户输入功能。我的服务是这样的:

function acceptOnlyAlphanumeric() {
  var usernameInput = document.register.username.value;

  if(!/^[a-zA-Z0-9]+$/.test(usernameInput)) {
    console.log("Please enter only numbers and letters. No special character!")
    return true;
  }
    return false;
}

然后我的茉莉花脚本就像这样:

Services = {
  userFilter : function () {
    var usernameInput = 'ThisIsAnAlphanumeric112233';

    if(!/^[a-zA-Z0-9]+$/.test(usernameInput)) {
      console.log("Please enter only numbers and letters. No special character!")
      return true;
    }
      return false;
  }
};

Everythings工作正常,但我担心测试的有效性。问题是,这是用JasmineJS测试javascript函数的正确方法吗?感谢

1 个答案:

答案 0 :(得分:1)

一个好的测试,以及良好的代码是模块化的。您只是在测试代码是否返回false。要检查代码是否正确测试字符串是否为字母数字,您可能需要针对字母数字字符串以及非字母数字字符串对其进行测试。我会将字符串传递给您正在测试的函数。

Services = {
  userFilter : function (userInput) {
  //var usernameInput = 'ThisIsAnAlphanumeric112233';
  if(!/^[a-zA-Z0-9]+$/.test(userInput)) {
    console.log("Please enter only numbers and letters. No special character!")
  return true;
  }
  return false;
  }
};




   describe("Test if user enters an acceptable user input which is alphanumeric", function () {
    it("Should test if user enters alphanumeric or not", function () {
      expect(Services.userFilter('ThisIsAnAlphanumeric112233')).toEqual(true);
    });
  });
describe("Test if user enters an acceptable user input which is alphanumeric", function () {
    it("Should test if user enters alphanumeric or not", function () {
      expect(Services.userFilter('ThisIsAnAlphanumeric#$$@@')).toEqual(false);
    });
  });