[英]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.