2017-12-21 15 views
0

を結果aparently等しい値を持つアサーション私はこのJavaScriptコードを持っている:Javascriptを:異なる

const BaseList = { 

    new: function(list) { 
    this.list = list; 
    return this; 
    }, 

    sortKeys: function(key) { 
    const keys = Object.keys(this.list); 
    keys.push(key); 
    keys.sort(); 
    return keys; 
    } 

} 

module.exports = BaseList; 

と私はモカ/アサートがこれをやってsortKeysをテストしてい:

describe('#sortKeys', function() { 

    it('should insert a new key in order', function() { 
    const par = {'a': 'test_a', 'c': 'test_c'}; 
    const bl = BaseList.new(par); 
    const sl = bl.sortKeys('b'); 
    assert.equal(sl,['a','b','c']); 
    }); 

}); 

私のテストであることを起こります失敗メッセージが表示されます:

AssertionError [ERR_ASSERTION]: [ 'a', 'b', 'c' ] == [ 'a', 'b', 'c' ] 

アサーションはそれらが異なっていると言います。

私はここで何が欠けていますか?

答えて

1

JavaScriptでは、オブジェクトインスタンス(配列)は、同じデータが現時点で含まれていても同じではありません。これは、JSが値ではなく参照によってオブジェクトを比較するためです。簡単な解決策のために

は、単に使用:より良い/より柔軟なソリューションについては

assert.equal(sl.toString(),['a','b','c'].toString()); 

How to compare arrays in JavaScript?

+0

はどうもありがとうございました! –

関連する問題