繁体   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