2016-10-20 2 views
3

この関数をテストする適切な方法は、NaNを返さない、または返しません。 考えてみましょう:mochaを使用して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の型=== "number"を指定し、それ自体(または他の任意の数)と等しくないことを知っています.Javascriptは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

関連する問題