簡體   English   中英

如何測試多個小數點?

[英]How to test for multiple decimal points?

我正在為應該返回浮點數的函數編寫單元測試。 我試圖阻止某人向該函數發送一組字符(注意,我沒有說字符串),例如3.2.1 如果我對這個“數字”使用常規測試,它們似乎都將失敗並顯示以下內容:

Uncaught SyntaxError: missing ) after argument list

例如:

  • var result = isNaN(3.2.1); //相同的錯誤
  • var result = parseFloat(3.2.1); //期待一個NaN,但是得到了錯誤
  • var result = typeof 3.2.1 === 'number' //相同的錯誤

我想我可以將其包裝在引號中並作為字符串進行測試(當謂詞為字符串時,以上所有測試均按預期進行)。

尚未解決此問題的各種SO問題:

因此,實際的問題是 :如何測試具有多個小數點的“數字”並拒絕它?

這是大多數測試成功運行的實際代碼:

/**
* 
* @param {*} value 
* Converts a numeric string value to a float for use by a timeout interval
* datatype: ParseTimeoutInterval(string)
* example: ParseTimeoutInterval('2.5')
* return type: float
* return example: 2.5
*/
SerialWidget.prototype.ParseTimeoutInterval = function (value) {

try {
    var self = this;

    self.CallListeners('debug', 'ParseTimeoutInterval: value = ' + value);

    if (value) {
        var result = parseFloat(value);
        if(result < 0 || isNaN(result)){
            self.CallListeners('debug', 'ParseTimeoutInterval: value is negative or NaN');
            return null;            
        }
    return result.toPrecision(2);

    } else {
        return null;    
    }
    self.CallListeners('debug', 'ParseTimeoutInterval: value is not a number');
    return null;

} catch (ex) {
    self.OnError('ParseTimeoutInterval', ex.message);
}
};

假設您擅長檢查字符串,則可以將其拆分為數組並檢查長度。

var badNumber = '3.2.1';
if (badNumber.split('.').length > 2) {
    console.error('uh oh. THAT\'s not a number!');
} else {
    // proceed
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM