2016-10-20 2 views
3

Каков правильный способ проверить, что функция не возвращает или не возвращает NaN. Рассмотрим:Правильное модульное тестирование против 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?

ответ

4

Почему функция не используется 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)

+0

Я нахожусь на Node.js. Благодарю. Это правильный ответ. – teroi

Смежные вопросы