問題タブ [lab]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - ラボで Hapijs API をテストする
API をテストするために Lab を使い始めています。API は通常の CRUD 操作を行いますが、ドキュメント ID を必要とする Update および Delete メソッドをテストするにはどうすればよいか考えています。
私の API は、新しく作成された mongo ドキュメントを 内に返しますresponse.payload
。私が理解していないのは、なぜDELETE
テストresultId
でundefined
.
これが私のコードです:
node.js - 「lab」と「code」と「mocha」と「chai」の nodejs ライブラリの比較
私は node.js を初めて使用し、Web および API の実装に hapijs を使用することにしました。
しかし、私は、hapi コミュニティが と を書き直したテストおよびアサーション ライブラリのために と を構築して使用していることを発見しましlab
た。code
mocha
chai
これらのライブラリの違いを見つけるのに苦労しています。
それらをすべて互換的に使用する可能性があることは知っていますが、コーディング標準を定義して順守したいので、より詳細な比較を希望します。正当な理由がない限り、ライブラリの組み合わせは好きではありません。
どんなフィードバックでも大歓迎です
node.js - Hapi.js Lab でこのテスト ケースをどの程度正確にカバーしていますか?
Hapi.Js サーバーにファイル アップロード POST ポイントがあります。コードは次のとおりです。
}]);
DB と AWS にヒットすることなく、このコード/ポイントの「アップロードされた画像パスを返す必要がある」場合をどのように正しくカバーしますか?
javascript - Mongoose モデルの単体テスト - テスト ケースが失敗した場合、接続が閉じない
Lab とMockgooseを使用して Mongoose モデルの単体テストをいくつか作成しています。Labs メソッドで DB 接続を開きlab.before()
、labslab.after()
メソッドでデータベース接続を強制終了しています。私が直面している問題は、テストケースが失敗した場合、接続は閉じられlab.after()
ませんが、実行されます(デバッグ用のコンソール出力を追加しました)
したがって、次を変更すると:
に:
その後、完全に正常に動作します。しかし、テストケースの失敗をシミュレートすると、「Closing」と「Closed」の両方がコンソールに表示されますが、接続自体は閉じられません... ctrl + cを押すまでハングします
上記のコードで何か不足していますか?
アップデート
実行中のプロセスを調べて、テスト ケースが失敗したときに処理が停止していないかどうかを確認しました。
node.js - 別のファイルで Mongoose モデルを単体テストすると問題が発生する (Mockgoose & Lab を使用)
Mongoose モデルが既にロードされた後にロードしようとすると、次のようなエラーがスローされます。
エラー: uncaughtException:
Account
一度コンパイルされたモデルは上書きできません。date=Fri Feb 26 2016 10:13:40 GMT-0700 (MST)、pid=19231、uid=502、gid=20、cwd=/Users/me/PhpstormProjects/project、execPath=/usr/local/Cellar/ノード/0.12.4/ビン/ノード、バージョン=v5.2.0、argv=[/usr/local/セラー/ノード/0.12.4/ビン/ノード、/usr/ローカル/セラー/ノード/0.12.4/ビン/lab]、rss=73306112、heapTotal=62168096、heapUsed=29534752、loadavg=[1.6005859375、1.84716796875、1.8701171875]、uptime=648559 OverwriteModelError:Account
一度コンパイルされたモデルを上書きできません。
これで問題ありませんが、モデルの単体テストを作成しているため、問題が発生しています。
ファイル構造に関するいくつかの基本的な情報...
フォルダー内にある個別のファイルにすべての Mongoose モデルがあり、src/models/
これらのモデルをロードするには、フォルダーを要求してMongoose
オブジェクトを渡すだけで、src/models/index.js
ファイルはすべてのモデルをロードし、のオブジェクトを返します。モデル。ファイルはここindex.js
で見ることができます(関連性はありませんが、モデル名は基本的にファイル名であり、.jsはありません)
モデルの単体テストも個別のファイルに分割されるようになりました。モデルごとに 1 つのテスト ファイルがあります。また、各単体テスト ファイルは特定のモデルに焦点を当てていますが、それらの一部は他のモデルも使用しています (前後のタスク用)。
初期の問題
2 番目の単体テスト ファイルを作成しました。それぞれを個別に実行すると、問題なく動作します。しかし、それらすべてを実行すると、モデルを複数回ロードしようとしているという上記のエラーが表示されます。./models
各ユニットテストケースで必要なので、複数回ロードしています。
最初の解決の試み
after()
次のように、個別の単体テスト ファイルを介して、ロードされたすべてのモデルをクリアできるのではないかと考えました。
まったく機能しませんでした (新しいエラーはありませんが、コンパイルされたエラーが持続した後、同じモデルを上書きできませんAccount
)
2 回目の解決の試み (半成功)
モデルが を返そうとしたときに最後の行でエラーをスローする代わりに、モデルMongoose.model()
の先頭にロジックを挿入して、モデルが読み込まれているかどうかを確認し、読み込まれている場合はそのモデル オブジェクトを返します。
私は今、自分のモデルでそれを試していますが、問題なく動作しているようです (モデルを複数回読み込んでいると言って、上記のエラーが表示されないことを意味します)。
新しい問題
単体テストが実行されるたびに、エラーが表示されます。エラーはモデルごとに 1 回表示されますが、同じエラーです。
そのスタック トレースにはあまり詳細はありません。
各モデルに追加したコードが原因であるかどうかはわかりませんが、既にロードされているかどうかを確認し、ロードされている場合は、単一の単体テストを実行したときに表示されるか、プロパティを設定できないことのみが表示されます ' 0' of undefined 2 回 (最初のモデルのロードが成功した場合に 1 回、次の 2 つの場合に 2 回...と思います)
誰かが何か意見を持っていれば、私はそれを非常に感謝しています! ありがとう
アップデート
詳細情報を取得するために実行lab --debug
してみましたが、表示されるエラーの周りにスタック トレースは表示されませんが、エラーが 2 倍になります...これは奇妙です。したがって、 justlab
を実行するときに 2 があった場合、lab --debug
4 が表示されます
また、Winstonを使用してログを記録しています。ログ レベルをデバッグに変更すると、コンソールに多くのデバッグ エントリが表示されますが、これらのエラーに関するエントリは表示されません。単体テストの依存関係で?
エラーは、error.jsファイルから発生したと言っていますが、それ以外のことは何も言っていません。を介してerror.jsを見つけようとしましたが、find . -name 'events.js'
結果はありません..奇数
mongodb - hapijs を使用した server.inject が正しい応答を返さない
Lab を使用してコードをテストしようとしています。ただし、何らかの理由で、適切なペイロードを配置すると、コードは何もしません。約束が返されないようです:
ペイロードがないように、または Joi 検証と一致しないようにコードを編集すると、応答が返されます。
このコードは、サーバーを実行して手動で API をテストすると機能することに注意してください。私はそれを理解することはできません。