2016-12-29 7 views
-1

私はjavascript/nodejsを使い慣れていて、mocha/nodejsを使って4mbの範囲内でペイロードをテストする必要があります。ペイロードをシミュレートするために長さ〜4mbの文字列を生成し、ペイロードとしての要求しかし、私はタイムアウト例外Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.を取得しています。これはおそらく、このアプローチはリクエスト生成自体が長すぎるため有効ではないからです...私は待ち時間を増やそうと試みましたが無駄でした。javascriptでリクエストの実行時にペイロードを生成するには?

it('expected: handle request made with payload exceeding REQUEST_LIMIT of 4mb', (done) => { 
 
     chai.request(server).post('/payload').send({ data: payload(4520000) }) // payload exceeds RATE_LIMIT of 4mb 
 
     .set('content-type', 'plain/text') 
 
     .end((error, response) => { 
 
      expect(response).to.have.status(500); 
 
      // return expect(response).to.eventually.have.status(500); 
 
     done(); 
 
     }); 
 
    });

私はチャイ-約束通りを-もを使用している、それは私のために動作しませんでした。注:

return expect(response).to.eventually.have.status(500);

答えて

1

は、私はちょうどchai.requestという約束を返すことをお勧めしますdoneを生成して使用していないため、エラー処理が複雑になります。

it('expected: handle request made with payload exceeding REQUEST_LIMIT of 4mb', 
    () => chai.request(server).post('/payload').send({ data: payload(4520000) }) 
     .set('content-type', 'plain/text') 
     .end((error, response) => { 
      expect(response).to.have.status(500); 
     })); 

(私は上記の矢印機能のために "ブロックボディ"の代わりに "簡体字"を使用しました。あなたは、ペイロード生成は時間がかかりすぎるので、タイムアウトを長くする必要がある場合はreturnが暗示されています。)

、あなたは適切なfunctionに上記を変更し、十分に大きな値にthis.timeout(....)を使用する必要があると思います。

0

私はそれが私の側にあったように問題を理解し、少なくともペイロード生成へのアプローチを肯定するために@Louisに感謝します。私はpackage.json 'mocha ./tests/ -t 3000'で待ちタイムアウトを指定しましたが、変更を有効にするには 'npm install'を実行できませんでした。

it('expected: handle request made with payload exceeding REQUEST_LIMIT of 4mb', (done) => { 
 
     chai.request(server).post('/payload').send({ data: payload(4520000) }) // payload exceeds RATE_LIMIT of 4mb 
 
     .set('content-type', 'plain/text') 
 
     .end((error, response) => { 
 
      expect(response).to.have.status(500); 
 
      done(); 
 
     }); 
 
    }).timeout(3000);

私はpackage.jsonからタイムアウトの使用を削除し、そのそれぞれのテストケースにそれを移動しました。礼儀@ルイス

+1

'npm install'がタイムアウトに何か変わることはありません。 'mocha ./tests/ -t 3000'をハードコードし、' npm run ... '(または' npm test')を使うのを忘れた 'package.json'の' test''スクリプトをどのように設定するのか分かりました。問題になるだろう。また、それが私の場合は、タイムアウトが必要なスイート全体が本当にない限り、スイート全体ではなく、ローカルのみでタイムアウトを増やしたいと考えています。 – Louis

+0

あなたはそうです、テストケース固有のものでなければなりません。私はフィードバック、感謝の答えを更新しました! –

関連する問題