[解決済み] node.jsモジュールの内部(非exports)関数にアクセスし、テストするには?
2022-04-09 19:44:12
質問
nodejsの内部(つまりエクスポートされていない)関数をテストする方法を見つけようとしています(できればmochaかjasmineを使いたいのですが)。そして、私はアイデアを持っていない
例えば、こんなモジュールがあるとします。
function exported(i) {
return notExported(i) + 1;
}
function notExported(i) {
return i*2;
}
exports.exported = exported;
そして、以下のテスト(mocha)。
var assert = require('assert'),
test = require('../modules/core/test');
describe('test', function(){
describe('#exported(i)', function(){
it('should return (i*2)+1 for any given i', function(){
assert.equal(3, test.exported(1));
assert.equal(5, test.exported(2));
});
});
});
をユニットテストする方法はありますか?
notExported
関数は、公開されることを意図していないため、実際にエクスポートすることなく、この関数を使用できますか?
どのように解決するのですか?
その リワイヤ モジュールは、間違いなくその答えです。
以下は、エクスポートされていない関数にアクセスし、Mocha を使ってテストする私のコードです。
application.js:
function logMongoError(){
console.error('MongoDB Connection Error. Please make sure that MongoDB is running.');
}
test.jsです。
var rewire = require('rewire');
var chai = require('chai');
var should = chai.should();
var app = rewire('../application/application.js');
var logError = app.__get__('logMongoError');
describe('Application module', function() {
it('should output the correct error', function(done) {
logError().should.equal('MongoDB Connection Error. Please make sure that MongoDB is running.');
done();
});
});
関連
-
[解決済み】エラーです。EACCES: 権限が拒否されました、アクセス '/usr/local/lib/node_modules' 。
-
[解決済み】passport.js passport.initialize() ミドルウェアが使用されていません。
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み] Node.jsのホスト名/IPが証明書のaltnamesと一致しない
-
[解決済み] http-server コマンドが見つかりません。
-
[解決済み] ExpressJS : res.redirect()が期待通りに動作しない?
-
[解決済み] Node.jsを完全にアンインストールして、最初から再インストールする方法 (Mac OS X)
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] Pythonの関数が例外を投げるかどうかをテストするにはどうすればよいですか?
-
[解決済み] Node.jsで "Cannot find module "エラーを解決するにはどうしたらいいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Discord.js が特定のチャンネルにメッセージを送信する場合
-
[解決済み】エラーです。EACCES: 権限が拒否されました、アクセス '/usr/local/lib/node_modules' 。
-
[解決済み】Google spreadsheet api Requestに不十分な認証スコープがあった。
-
[解決済み】"npm update -g" の後に "Cannot find module 'npmlog'" というエラーが発生する。
-
[解決済み】ENOENT, そのようなファイルまたはディレクトリがありません。
-
[解決済み] Node.jsで「btoaが定義されていない」エラーが発生する
-
[解決済み] npm install エラー - ローカルの発行者証明書を取得できません。
-
[解決済み] NodeJsのSequelizeでautoIncrementはどのように動作するのですか?
-
[解決済み] DynamoDBで一括削除するにはどうしたらいいですか?
-
[解決済み] MochaとNode.jsを使ったプライベート関数のユニットテスト