2015-11-23 40 views
0

我今天的最后一个问题并不是真正的问题,我想对您创建的JasmineJS测试代码有意见,以测试用户是否输入了字母数字。测试输入是字母数字还是不使用JasmineJS

我有称为用户名的HTML输入框:

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

我创建Javascript函数来过滤用户输入,如果输入是字母数字或没有。

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; 
} 

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

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; 
    } 
}; 

然后,我的茉莉花脚本是这样的:

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()).toEqual(false); 
    }); 
    }); 

万物工作得很好,但我关心的测试的有效性。底部的问题是,这是用JasmineJS测试JavaScript函数的正确方法吗?谢谢

回答

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#[email protected]@')).toEqual(false); 
    }); 
    }); 
+0

OMG非常感谢你。 。你刚刚打开了我的第三只眼睛叫JasmineJs。 。 :)我现在完成了JasmineJS的基本知识。非常感谢您的示范。 。 :)解决 – Neil

+0

所以为了澄清,可以将参数“userInput”更改为任何参数名称,如“input”或“inputValue”。 。 ? :) – Neil

+0

我测试了它,并改变参数userInput后仍然工作。 – Neil

相关问题