[解決済み] MochaとNode.jsを使ったプライベート関数のユニットテスト
2022-05-01 01:08:18
質問
を使用しています。 モカ Node.jsで書かれたアプリケーションをユニットテストするためです。
モジュールでエクスポートされていない関数をユニットテストすることは可能なのでしょうかね。
例
でこのように定義された関数がたくさんあるんです。
foobar.js
:
function private_foobar1(){
...
}
function private_foobar2(){
...
}
そして、パブリックとしてエクスポートされたいくつかの機能。
exports.public_foobar3 = function(){
...
}
テストケースは以下のような構成になっています。
describe("private_foobar1", function() {
it("should do stuff", function(done) {
var stuff = foobar.private_foobar1(filter);
should(stuff).be.ok;
should(stuff).....
明らかに、これはうまくいきません。
private_foobar1
はエクスポートされません。
プライベートメソッドをユニットテストする正しい方法は何ですか?Mocha にはそのためのビルトインメソッドがあるのでしょうか?
どのように解決するのですか?
関数がモジュールによってエクスポートされていない場合、モジュール外のテストコードから呼び出すことはできません。これは JavaScript の仕組みによるもので、Mocha 自身はこれを回避することができません。
プライベート関数をテストすることが正しいと判断したいくつかの例では、私は何らかの環境変数を設定し、モジュールがテストセットアップで実行されているかどうかをチェックするようにしています。もしテストセットアップで動作していれば、テスト中に呼び出すことができる追加の関数をエクスポートします。
ここでいう「環境」とは、大まかな意味です。それは
process.env
などと、モジュールに伝えることができます。このようなことをしなければならないケースは
RequireJS
という環境で、私は
module.config
を使用します。
関連
-
要素ツリー制御によるvueTreeテーブル
-
JavaScriptのクロージャの説明
-
vueの補間表現とv-textディレクティブの違いについて
-
[解決済み】SyntaxError: JSONの位置1に予期しないトークンoがある。
-
モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory, scandir 'D:\.... \node_modules
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] Node.jsを完全にアンインストールして、最初から再インストールする方法 (Mac OS X)
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] パブリック、プライベート、プロテクトの違いは何ですか?
-
[解決済み] node.jsモジュールの内部(非exports)関数にアクセスし、テストするには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
JavaScriptのクロージャの説明
-
Vueのクラススタイルの使い方の詳細
-
Vueのフォームイベントのデータバインディングの説明
-
[解決済み] Error : 未定義のプロパティ 'map' を読み取ることができません。
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み】JavaScriptエラー(Uncaught SyntaxError: Unexpected end of input)
-
nullのプロパティinnerHTMLを読み取れません エラーメッセージ
-
JSクリックイベント - Uncaught TypeError: プロパティ 'onclick' に null を設定できません。
-
OSSアップロードエラーを解決する: net::ERR_SSL_PROTOCOL_ERROR
-
[解決済み] node.jsモジュールの内部(非exports)関数にアクセスし、テストするには?