1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CodeceptJSでREST APIをテストする

Posted at

初めに

自動化しないままにしてしまった課題を解決し、メモしていきたいと思う。
本記事では複数のアカウントのやり取りで進むシナリオを検証する方法を考える。
(手動テストを繰り返すのは大変…)

記事の対象

REST APIの実行を含むシナリオのCodeceptJSを用いたE2Eテストをしたい方

この記事のゴール

  • CodeceptJSを用いてREST APIを実行する
  • その結果を検証する
  • システムを通して正しい挙動をしているかを検証する

CodeceptJSでREST APIをテストする

公式ドキュメントを参考にする。

設定

codecept.conf.jsにあるexports.confighelpersにドキュメントを参考に設定を追記する。
各プロパティの説明はこちら

    // REST APIの設定
    REST: {
      // REST APIのエンドポイントを設定
      endpoint: 'https://{Domain}/{Path}',
      // ログ出力を整形する
      prettyPrintJson: true,
    },

テストを作成する

REST APIのPOSTメソッドでメッセージを送信し、送信されたメッセージがシステムから閲覧できることをテストするコードを作成する。

Feature("API実行");

const ScenarioPost = "POST";

Scenario(ScenarioPost, async ({ autoLogin }) => {
  // メッセージをAPIで送信
  await I.sendPostRequest('/message/post', { "message": "I want this book." });
  // エラーなく終了することを確認
  I.seeResponseCodeIsSuccessful();

  // システムにログイン
  await autoLogin("hiraUser");
  // メッセージ確認画面へ遷移
  I.amOnPage(sendMessageUrl);
  I.waitForText("メッセージ送信", 10);

  // 最新のメッセージが送信されたメッセージと一致していることを確認
  I.see("I want this book.", "$message-0");
});

最後に

APIを実行しシステム上に正しく反映されることのテストを自動化することができた。
過去に課題とは思っていたものの、調査コストを惜しんでしまい手動テストで済ませてしまった。
こういった技術的負債が残ることで開発スピードが著しく損なわれる。
次は各メソッドの設定方法、レスポンスの内容の確認方法をまとめていきたい。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?