Chai JSONパターン
JSON に似たわかりやすい構文でオブジェクトの深いマッチングを行います。
はじめに
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),
}`);