Rails 3.1+のJavaScriptテストにおけるJasmineとMochaの比較 [終了しました]
質問
私はJasmineの経験を持っており、かなり気に入っています。 JasmineとMochaの両方、特にRails向けの経験をお持ちの方はいらっしゃいますか? 私は、それが乗り換える価値があるかどうか疑問に思っています。
どのように解決するのですか?
JasmineとMochaの両方でテストをしてみました。まず、切り替えは比較的簡単です。基本的な
describe
と
it
BDD パターンは同じです。アサーションの方法を変更したり、非同期テスト用に別のインターフェイスに切り替えたりする必要があります。全体として、それらは同等です。
Mocha の非同期インターフェースはよりシンプルで、より一貫しています。テストとセットアップは同期または非同期のどちらでも可能で、これは素晴らしいことです。これに加えて、TJ Holowaychuck が壮大なコードポエットであるという事実が、Mocha を試す良い理由です。
Jasmineのマッチャーは、特にjasmine-jqueryプラグインと組み合わせたとき、より読みやすく、よりエレガントだと思います。Mocha は通常、アサーション用の別のライブラリとペアになっており、ブラウザ内でテストを行う場合は chai.js、ノードのみのテストでは should.js となることが多いようです。私は chai の
assert.equal()
インターフェースには満足していますが、Jasmineスタイルの
expect($("#central_errors").html()).toContain("must provide a name");
の方がよりエレガントに思えます。私は、chai.jsの
expect(42).to.be.above(41)
スタイルのインターフェースは、聴覚的にうまく機能しないからです。
最終的には、これは個人的な好みの問題なので、Jasmineの代わりにMochaのテストを書いて、それがどのように感じられるかを確認することを強くお勧めします。たとえJasmineに固執することを決めたとしても、それは価値のある投資であり、最初の手の知識の場所からそうすることになり、Jasmineが解決する問題のいくつかを解決する他の方法について認識することができます。私はそれを試してみましたが、Mochaに固執しているのは、TJに賭けることが良い賭けであるということもありますが、Jasmineは成熟し、堅実で、広く採用されているライブラリでもあるのです。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] 動的に生成された要素にイベントバインディングを行うか?
-
[解決済み] 配列からオブジェクトを生成する
-
[解決済み] reactのrender関数でdynamic hrefを作成するには?
-
[解決済み] JavaScriptで、ある文字列が別の文字列の中に出現するすべてのインデックスを見つけるにはどうすればよいですか?
-
[解決済み] JavaScriptでjson-objectのキーを取得する [重複].
-
[解決済み] JavaScript で `throw` の後に `return` をする必要がありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Node.jsでbase64エンコードされた画像をAmazon S3へアップロードする
-
[解決済み] なぜ "use strict "はパフォーマンスを10倍向上させるのか?
-
[解決済み] JSXとLoadshを使用して、ある要素をn回繰り返す方法
-
[解決済み] Reactコンポーネントでthis.setStateを複数回使用するとどうなりますか?
-
[解決済み] jQueryで入力ファイルが空かどうかをチェックする方法
-
[解決済み] CORS: 認証モードは 'include' です。
-
[解決済み] JavaScriptとLuaの微妙な違い [終了しました]
-
[解決済み] なぜjavascriptのES6 Promisesはresolve後も実行を継続するのですか?
-
[解決済み] JavaScript で css プロパティを使用して HTML 要素の背景色を設定する方法
-
[解決済み] これは純関数ですか?