質問

小さなJavaScriptアプリケーションでモジュールのユニットテストを書いています。インターフェイスを清潔に保つために、実装の詳細の一部は匿名関数(プライバシーの通常のJSパターン)によって閉じられます。ただし、テスト中は、プライベートパーツにアクセス/mock/検証する必要があります。

私が以前に書いたテストのほとんどは、実際のプライベート変数(メンバー、識別子、呼び出したいもの)がないPythonにありました。ユーザーの主要なアンダースコアを介してプライバシーを提案し、コードのテスト中に自由に無視します。静的にタイプされたOO言語では、プライベートメンバーを保護するように変換し、テストするオブジェクトをサブクラス化することにより、テストにアクセスできるようにすることができると思います。 JavaScriptでは、後者は適用されませんが、前者は悪い練習のように見えます。

私は常にブラックボックスのテストに戻って、最終結果を確認することができました。それは最もシンプルでクリーンなアプローチですが、残念ながら私のニーズに合わせて十分に詳細ではありません。

それでは、JavaScriptでのテスト用のバックドアを保持しながら、変数を非公開に保つ標準的な方法はありますか?

役に立ちましたか?

解決

いいえ、あるとは思いません。基本的に、閉鎖アプローチを取り、ホワイトボックステストを放棄するか、ホワイトボックステストを行い、「プライベート」メンバーの名前の装飾を使用しているかどうかに要約されます。実際には、Pythonだけでなく、JavaScriptでは、あまりにも多くのプロジェクトを使用して、そうでない魔法のアンダースコアを使用してプライベートを飾ります。したがって、ある意味では、これはすでに問題に対する広く受け入れられている解決策です。

あなたがそれを望んでおらず、本当に、本当に、本当にホワイトボックスのユニットテストが必要な場合は、常にテストをオブジェクトに統合できます。生産コードの個別のビルドステップ(最小化、要求/提供解像度など)がある場合は、このプロセスでテスト機能を削除できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top