e2eテストでタイムアウトさせたい
e2eテストを書いていて外部サーバーでタイムアウトを発生させる
テストケースを確認したいことがあり
すこしハマったので書きとめておきたい
プラグインはmockttpを使用
//外部サーバーを実行しているラッパーメソッド
function method() {
await api.post(path, request).catch(err => {
if (err.code === 'ECONNABORTED') {
console.log('タイムアウト');
}
});
}
function main() {
method();
}
上のような感じで(例がうまくかけないですが)タイムアウトのときになにか処理させるということをしたく
E2Eテストで外部サーバーでの処理をタイムアウトさせたい、ということがあった
外部サーバーの部分を以下のようにモックしてテストを実行
const endPoint = await mock.post(path).thenTimeout();
こうすると外部サーバーはタイムアウトを返してくれるようになった
ただ、外部サーバーへのリクエストパラメータや呼び出し回数を確認するため
endPoint.getSeenRequests()
をしてリクエストの情報を取得しようとしたが、タイムアウトに・・・
endPointをログにだしてみたがrequest
に要素は入っている、Countも1でカウントされている
リクエストの情報も確認したいのでthenCallback()
を使うようにした
const endPoint = await mock.post(path).thenCallback(async req => {
await sleep(ms);
return {
statusCode: 200
}
});
sleepは引数の時間分スリープするメソッド
テストのタイムアウト時間より長く設定することで、タイムアウトエラーが発生
endPoint.getSeenRequests()
でリクエスト情報を取得できるようになった
thenTimeout()
がどういう感じで動いているか
getSeenRequests()
でどうしてタイムアウトになってしまうのか
まだ理解しきれていないのでまた確認しておきたい
Author And Source
この問題について(e2eテストでタイムアウトさせたい), 我々は、より多くの情報をここで見つけました https://qiita.com/reika_sato/items/241b14f0d84f1c6234ca著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .