6

Nockを使用してノード アプリケーションをテストする際に問題があります。経由ですべてのリクエストを記録しますnock.recorder.recが、その中にはマルチパート リクエストがあります。form-dataを使用します。このモジュールは、関数を使用するときに、要求本文に境界form.appendを設定します。問題は、境界が常に異なり、記録されたデータでテストを実行すると、Nock が要求に一致するものを見つけることができないことです (記録時のものではなく、要求本文のボインダリのため)。何ができるでしょうか?私の悪い英語でごめんなさい。

4

2 に答える 2

5

同様の問題に遭遇しました。できることは、代わりに 2 番目の引数を関数として使用し、フォーム データとして送信しようとしているオブジェクトと一致させることです。例:

nock('localhost')
  .post('/url', function(body) {
    return JSON.stringify(body) === JSON.stringify(params);
  })
  .reply(200, 'some data');

詳細については、こちらのドキュメントをご覧ください: https://github.com/pgte/nock#specifying-request-body

于 2015-09-21T15:47:04.510 に答える
4

別の解決策は、次を使用することRegExpです。

nock(baseUrl)
    .post(`/url', /form-data; name="field"[^]*value/m)
    .reply(200, 'some data');

ノート

  • 正規表現内の入力文字 ( ^) の先頭 (フォーム データに改行が含まれている可能性があるため)
  • マルチラインのmフラグ
  • 上記の例は以下に対応します。form.append('field', value);
  • 実際の例については、こちらを参照してください。RegExpこれは、クラスを使用して、正規表現内で変数を使用する方法も示しています。
于 2018-05-19T21:13:54.660 に答える