Mochaを使用して、Express.jsアプリケーションの小さなモジュールをテストしています。このモジュールでは、関数の1つが配列を返します。配列が特定の入力に対して正しいかどうかをテストしたいと思います。私はこのようにしています:
suite('getWords', function(){
test("getWords should return list of numbers", function() {
var result = ['555', '867', '5309'];
assert.equal(result, getWords('555-867-5309'));
});
});
これが実行されると、次のアサーションエラーが発生します。
AssertionError: ["555","867","5309"] == ["555","867","5309"]
ただし、テストをに変更するassert.deepEqual
と、テストは問題なくパスします。==
vsの場合かと思っていたのですが、===
入ると
[1,2,3] === [1,2,3]
node.jsコマンドラインに、まだfalseが表示されます。
なぜ配列は他の値のように比較しないのですか(例1 == 1
)?そしてassert.equalとassert.deepEqualの違いは何ですか?
deepEqual()
; あなたが実際にそれに遭遇するまで、あなたは比較で実際に何を考えているのではありません。