tag:crieit.net,2005:https://crieit.net/tags/mocha/feed 「mocha」の記事 - Crieit Crieitでタグ「mocha」に投稿された最近の記事 2019-03-17T20:09:42+09:00 https://crieit.net/tags/mocha/feed tag:crieit.net,2005:PublicArticle/14860 2019-03-07T23:31:07+09:00 2019-03-17T20:09:42+09:00 https://crieit.net/posts/Mocha-SuperTest-async-await Mocha+SuperTestでasync/awaitを使ってテスト <p>MochaとSuperTestを使ったテストで、async, awaitを使ったところ正しい正確な情報が全然見つからずハマったためメモ。とりあえず作った形はこんな感じ。正しいのかは謎だけど一応正しい場合だけちゃんと通るっぽい。</p> <pre><code class="javascript">describe('/questions', () => { before(async () => { app = await getApp() }) it('GET /:id', async () => { const question = await QuestionFactory.create() return await request(app) .get(`/api/questions/${question.uniqueId}`) .expect(200) .expect(res => { if (!res.body.question) throw new Error('Question not found') if (res.body.question.name != question.name) throw new Error('Question name is not matched') }) }) }) </code></pre> <p>describeにasyncを指定するとおかしくなるので共通処理はbefore等のライフサイクルにて行う。</p> <p>あとrequest+expectの書き方の正解が上手く見つからず悩んだけど、最終的にawaitしてreturnしたら上手く動くようになった。情報を探すとexpectでdoneしろと書いてあるけどどうもうまくいかないっぽい。</p> <p>最初にも書いたけど正しい情報か謎なので、どうしても上手くいかなくて困っているという方がいればお試しを。</p> だら@Crieit開発者