簡體   English   中英

用mocha和斷言正確地對NaN進行單元測試

[英]Properly unit testing against NaN with mocha and assert

測試該函數的正確方法是什么,不返回或返回NaN。 考慮:

 require('assert'); var functionUnderTest = function() { return NaN; } // mocha test for above function describe('Function returning NaN', function() { it('shall return NaN', function() { assert.equal(functionUnderTest(), NaN); // AssertionError: NaN == NaN assert.notEqual(functionUnderTest(), NaN); // No AssertionError }); }); 

我特別想測試該函數不返回NaN。 我知道IEEE754指定類型NaN ===“數字”並且它不等於它自己(或任何其他數字)並且Javascript實現了浮點數,就像IEEE754定義它們一樣。

但是如何測試該函數會返回還是不返回NaN?

為什么不使用isNaN函數並執行類似的操作:

require('assert');

var functionUnderTest = function() {
  return NaN;
}

// mocha test for above function
describe('Function returning NaN', function () {
  it('shall return NaN', function () {
    assert.equal(isNaN(functionUnderTest()), false); // AssertionError: NaN == NaN
    assert.notEqual(isNaN(functionUnderTest()), true); // No AssertionError
  });
});

如果你在瀏覽器上可能你必須使用如下函數: Number.isNaN(NaN)

暫無
暫無

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

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