Chai JSONパターン

JSON に似たわかりやすい構文でオブジェクトの深いマッチングを行います。

CircleCI

はじめに

Chai JSON パターンを使用すると、JavaScript オブジェクトのブループリントを作成し、重要な情報の検証を行うことができます。JSON 構文を使用して拡張し、使いやすいバリデーターを使用できるようになります。主に cucumber-js で API をテストするために登場しましたが、あらゆるアプリケーションで使用できます。さらに、カスタムバリデーターで基本機能を拡張できます。詳細については、API リファレンスを参照してください。

API

詳細なAPI リファレンスを参照してください。


const pattern = `
    {
        "username": String AND alphanum AND minLength(3) AND maxLength(30),
        "password": String AND regex("/^[0-9a-zA-Z]{5,30}$/"),
        "access_token"?: String AND Number,
        "birthyear": Integer AND range(1900, 2017),
        "email": String,
        ...
    }
`;

expect(user).to.matchPattern(pattern);

上のパターンは次の条件を満たすキーを持つオブジェクトであるように user が必要です。

  • ユーザー名
    • 必須文字列
    • 英数字のみを含めます。
    • 3 文字以上、最大 30 文字である必要があります。
  • パスワード
    • 必須文字列
    • カスタム正規表現に適合する必要があります。
  • アクセストークン
    • オプションの文字列または数値
  • 生年月年
    • 1900 年から 2017 年の間の必須の整数
  • メール
    • 必須文字列
  • 他のキーを許可します (例: createdAt, updateAt など)。

場合 user はパターンを満たしません。テストは失敗し、 user とパターンとの差に関するエラーが表示されます。

使用方法

使用は 2 ステップのプロセスです。最初に、 chai-json-pattern パッケージをインストールする必要があります。

npm run --save-dev chai-json-pattern

次に、 chaiJsonPattern をインポートして matchPattern を使用します。

import chai, { expect } from 'chai';
import chaiJsonPattern from 'chai-json-pattern';

chai.use(chaiJsonPattern);

expect({ a: 2 }).to.matchPattern(`{
    "a": Number AND range(0, 5),
}`);