問題タブ [supertest]
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 - スーパーテストでダウンロードが成功したかどうかをテストする
API エンドポイントをsupertestでテストしていますが、うまく機能しますが、ファイルのダウンロードが成功したかどうかをテストする方法がわかりません。
私のルートファイルでは、エンドポイントを次のように定義しました:
関数は次のgetFile()
ようになります。
次に、テスト ファイルで次のことを試します。
ログアウトするので、ファイルが見つかったことは確かですFile found!
。手動で試しても問題なく動作しますが、何らかの理由で mocha が返されますError: expected 200 "OK", got 404 "Not Found"
。
さまざまな MIME タイプと supertest を試しまし.set("Accept-Encoding": "*")
たが、何も機能しません。
誰でもこれを行う方法を知っていますか?
node.js - スーパーテスト、エクスプレス、モカを使用したうなり声テストAPI
モカとスーパーテストを使用してテストする、エクスプレスで実行されているhttpsサーバーがあります。
私の問題は、テストのみを実行した場合、問題ありません。テストでgruntfileを実行してからexpressを実行しようとすると、テストファイルでafter()をapp.close()で実行しても、多くのEADDRINUSEエラーが表示されます。同じことがテストの監視タスクにも当てはまります。
これが私の例のテストです:
これらのテストは完璧にはほど遠いことを認識しています。適切なソフトウェア テストの冒険を始めたばかりです。
これらの「既に使用されているポート」はすべて明らかであり、どれも...問題を引き起こしません。すべてのテストは正常に動作し、サーバーは正常に動作しますが、stdout はクレイジーです。このような動作は理想とはほど遠いものであり、おそらく潜在的な問題や不安定性の問題に満ちています。
私の質問は - どうすればそれを取り除くことができますか?
私のアイデアは次のとおりです。
異なるポートだけでテスト用の専用サーバーを作成します。残念ながら、これを実装する方法を知る必要があります。
スーパーエージェントが実行されていない場合にサーバーを実行するための条件を作成するか、それ以外の場合はスーパーエージェントに渡しますか?
スーパーエージェント以外のものを使用します(リクエストなどですが、すべてのCookieとnode_tls_reject_unauthorizedが機能するかどうかはわかりません.
ご覧のとおり、私はそのトピックに苦労しており、答えよりも多くの質問があり、どこを見ればよいかを知るのに十分な経験がありません.
助けていただければ幸いです。
編集:
私ができることがわかりました:
これは別のポートでテストを開始しますが...とにかくserver.js全体がロードされるため、とにかく開始します。次に、実行中のサーバーと一緒に起動すると、明らかな EADDRINUSE があります。
express - 統合テストのためにモカとスーパーテストでエクスプレスを設定するにはどうすればよいですか?
Node.js、エクスプレス、スーパーテストは初めてで、基本的なテストの設定方法がわかりません。私はアプリを作成しました:
依存関係に mocha と supertest を追加しました:
次に、この簡単なテストを書きました:
テストは失敗します:
ソフトウェア バージョン:
express - モカ + スーパーテスト + アサート: テスト失敗時に応答本文を出力する
Express アプリをテストするために mocha、supertest、および assert を使用しています。Express アプリは開発モードで実行されるため、リクエストが失敗するたびに有用なデバッグ情報が JSON として返されます。このデータをテスト スイートで印刷したいのですが、テストが失敗した場合に限ります。私のテストの例 (CoffeeScript):
mocha print res.bodyを作成するにはどうすればよいですか?ただし、テストが失敗した場合のみですか? 可能であればconsole.log(res.body) if test.failed
、各ブロックに次のようなものを配置する必要はありません。describe
node.js - テスト Express API にはローカル サーバーが必要です
スーパーテストを使用してExpressアプリケーション(nodeJS)でモカテストを実行できることを読んだので、別のターミナルセッションでアプリを実行する必要はありません。何を試しても、常に接続エラーで終了します。
継続的インテグレーションを構成するには、ノード サーバーが実行されていなくても、インテグレーションと単体テスト (mocha、supertest、should) を実行できる必要があることは明らかです。
記述されたテストは、アプリの内部 API エンドポイントを検証するためのものです アプリの高速サーバーを実行せずにテストを実行して、たとえばストライダーと統合できるようにする方法を誰が説明できますか