問題タブ [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.

0 投票する
1 に答える
2366 参照

javascript - スーパーテストで HTTPS サーバーをテストする NodeJS

supertestについて読みました。2 つのルートをテストすることができました。


しかし、登録が必要な他のページにアクセスしたいときに問題が発生します。通常の登録でこの解決策を見つけました:


私のアプリケーションでは、証明書に登録します。どうにかして証明書を使用してテストを構成できますか? https オプションを変更しても機能しません。


すべてのルートで 使用しているミドルウェアが原因だと思います。



質問:

  • 証明書を使用してエージェントを構成できる方法はありますか?
  • isAuthenticatedすべてのルートでミドルウェアを使用する設計を考え直すべきでしょうか?
  • スーパーテストのエージェントの Cookie オブジェクトをどうにか変更できますか?

次のスニペットのように req オブジェクトを設定できれば、おそらく解決策があるでしょう。

0 投票する
1 に答える
1272 参照

javascript - describe / request 関数にネストされた sinon スタブ

Mocha、Sinon、および SuperTest を使用したかなり単純なテストがあります。

私が抱えている問題は、assert(this.email.sendOne.calledWith('welcome'))this.email が定義されていないときです。
これは、私が期待していたスコープではないためだと確信しています。これは現在、request.end のスコープになっていると思います。

関数が呼び出されたことをアサートするために、sinon スタブにアクセスするにはどうすればよいですか?

0 投票する
2 に答える
15650 参照

node.js - モカとスーパーテストを使用してDELETEメソッドをカントテストする

ノードアプリ用の RESTful API を構築しようとしています。ルートを構築しましたが、すべて正常に動作しています。しかし、テストしようとすると、テスト中ではなく正常に機能しているにもかかわらず、DELETE メソッドを機能させることができません。

サーバーとテストのコードは次のとおりです。サーバ:

テスト:

そして、これはそれがスローするエラーメッセージです:

0 投票する
1 に答える
5153 参照

javascript - スーパーテスト アプリ リクエスト内から例外をキャッチできません

ここに示すコード例: https://gist.github.com/sebinsua/8118001

(失敗が3回、合格が2回あります。失敗が4回、成功が1回であってほしいです。)

通常の関数からスローされた場合、mocha で AssertionErrors をキャッチすることは可能ですが、関数がスーパーテスト ラップされたアプリ内から呼び出されるとすぐに、それらを検出できなくなります。特定のアサーションをエクスプレスアプリに挿入してテストできるようにしたかったので、これは面倒です。(私の問題を解決するリクエストオブジェクトとレスポンスオブジェクトをモックアップする方法を教えていただければ、テストしたい副作用のあるミドルウェアをテストしています。)

私はスパイにアクセスできるので、アクセスできない状態とは何の関係もないことを知っています。

ただし、node.js/express.js/supertest は、キャッチされなかった例外を応答のエラー メッセージに自動的に変換することに気付きました。おそらく、それが彼らがモカテストに引っかかるのを妨げているのですか?

編集

これが一般的な http.createServer() の問題であるかどうかを確認するために、すぐ下のコードをテストしました。そうではありません。これは、connect、express.js、supertest、または superagent レベルのいずれかで何かが発生していることを意味します。(これらのコード スニペットは、半分の時間しか機能しません...)

これは明らかな問題のようです (以下を参照) - AssertionError が赤いテキストで表示されていないことに気付きました (Mocha によってピックアップされた場合のように)。

要するに、私の質問は、A を B のように振る舞わせるにはどうすればよいかということです。

B

アップデート

/lib/proto.js にある senchalab の connect の 192 行目は、これがすべてうまくいかない場所です。try-catch があり、これによりエラーが次のミドルウェアに渡され、4 アリティのミドルウェアがそれを処理するか、フォールバック コードを実行して画面に自動的に出力するミドルウェアがなくなるまで、同じことを続けます。そして例外を破棄します...

何らかの方法でハンドルメソッドを上書きできない限り、エラーを再度スローするために何ができるかわかりません。

0 投票する
1 に答える
136 参照

node.js - BusterJS、ExpressJS、および SuperTest の使用に関する問題

ExpressJS + BusterJS + SuperTest を使用したルートのテストで問題が発生しています。

このテストを実行すると、次のようになります。

私は実際に主張を持っているので、これは間違っているようです。問題は、エラーが発生しない限り呼び出されないことです。

もう 1 つの問題は、複数の 'if' ブロックがある場合、それらの間でサーバーが再起動しないことです。node + express + buster + supertest スタックを間違って使用している可能性があるため、これらのルートをテストする方法についての助けをいただければ幸いです。