QUnit.equiv ってのは要するに QUnit.same のことです
jQueryが不要となったスタンドアローンなQUnit最新版をgithubから落としてくるとサンプルも付いてくる。この中に test/same.js というファイルがあり、以下のメソッドが大量に出てくる。
equals(QUnit.equiv(null, null), true, "null");
equalsはドキュメントにも書いてあるからわかる。
http://docs.jquery.com/QUnit/equals#actualexpectedmessage
じゃあQUnit.equivって?これはドキュメントに書いてない。下の方にQUnit.xxxなメソッドが色々と載っているがやはりここにも書いてない。結局コード読む。で、いろいろわかる。
QUnit.equiv は二つの要素が一致しているか判定する
test/same.js の例だと
QUnit.equiv(null, null); // => true QUnit.equiv(null, []); // => false
同じであればtrueを返す。ついでに、オブジェクトも配列もきっちりチェックしてくれる。つまりこれは、機能としては全く持って QUnit.same()と同じな訳です。
一体どうなってんのかと、コードをを追っていくとやはりあった。
// 292行目 deepEqual: function(a, b, message) { push(QUnit.equiv(a, b), a, b, message); }, .... // 383行目 QUnit.same = QUnit.deepEqual;
same = deepEqual ≒ equiv
みたいなものでしょうか。pushの先には結局ok()が待ち受けているだけなので、やはりチェックするということに関して云えば大して変わりないでしょう。なんであまり驚くようなメソッドではなかったということですね。
おまけ
中を読み進めると、jQueryから分離されたと云われながら未だにjQueryのソースコードが残っていたりします。例えば以下。
// 336行目 /** * Resets the test setup. Useful for tests that modify the DOM. */ reset: function() { if ( window.jQuery ) { jQuery("#main").html( config.fixture ); jQuery.event.global = {}; jQuery.ajaxSettings = extend({}, config.ajaxSettings); } },
まあ、あまり使わなさそうなものですが。
それにしてもQUnitは設計もコードも美しい。読んで気分が良いです。すてきですね。