javascript - 使用 mocha 和 assert 对 NaN 进行正确的单元测试

标签 javascript unit-testing

测试函数不返回或返回 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 指定 typeof NaN === "number"并且它不等于自身(或任何其他数字)并且 Javascript 实现 float 就像 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)

关于javascript - 使用 mocha 和 assert 对 NaN 进行正确的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40148955/

相关文章:

unit-testing - Angular 2 TestModuleMetadata 没有 EntryComponents 属性

c# - 模拟单元测试在 AsNoTracking() 上返回 ArgumentNullException

javascript - 如何在Windows 7上安装 meteor 路由器包?

由 <a> 引起的 javascript:history.back(-1) 问题

javascript - 根据完整日历日 View 中的数据显示时段

javascript - 将鼠标悬停在切换两个类上后点击事件问题

javascript - Gatsby :为什么我(或者我什至?)需要使用exports.onCreateNode 来创建页面?

ruby-on-rails - rails : test single file with rake test without resetting database

unit-testing - 如何对使用插件方法的 grails 服务进行单元测试?

java - 单元测试简单字函数