【JavaScript】JSON Schemaからmock作るやつ作った

More than 3 years have passed since last update.


JSON Schemaからmockつくるやつ

人生初のnpmです: json-schema-mockifier


Usage

npm installします.

$ npm install json-schema-mockifier

requireします.

var mockifier = require("json-schema-mockifier");

JSON Schemaファイルを読み込みます.

var schema = require("./spec/fixtures/schema.json");

JSON Schemaからmockを作ります.

var mocks = mockifier.mockify(schema);

こんなかんじのJSON Schemaを読んだとき,たとえばmocks.postの内容は以下のようになります.

{

created_at: '2012-01-01T12:00:00Z',
id: '01234567-89ab-cdef-0123-456789abcdef',
body: 'Ah^~ My heart will be hopping^~',
updated_at: '2012-01-01T12:00:00Z',
user: {
id: '01234567-89ab-cdef-0123-456789abcdef',
name: 'Syaro'
},
comments: [
{
created_at: '2012-01-01T12:00:00Z',
id: '01234567-89ab-cdef-0123-456789abcdef',
body: 'Is the order a rabbit?',
updated_at: '2012-01-01T12:00:00Z',
user: {
id: '01234567-89ab-cdef-0123-456789abcdef',
name: 'Syaro'
}
}
]
}

例えばAngularJSなアプリのテストコードで以下のようにするとかしたら幸せになれそうですね.

$httpBackend.whenGET("/api/posts").respond([mocks.post])


なにやってんの



  1. json-schema-parserでschema中の$refを全部展開する

  2. ルート直下のpropertiesごとにmockを作っていく



    1. 例示したschemaだとuserpostcomment

    2. 例えばpostの場合,properties/post/propertiesを見る

    3. 各propertyのexampleを引っこ抜いてくる



  3. しあわせ


json-schema-parserって?

HerokuのJSON Schemaにあるような$refを全部展開するためのmodule.

npmのライブラリでいい感じにこれをやってくれるやつが無いので自作した(他のやつはValidatorに内包されてるとかそもそも展開できないとかそんなん).

JSON Schemaでは色んな所で利用するpropertyが出てきたりするが,それを毎回書くのはアホらしいので再利用できるようにdefinition以下にpropertyの定義とか書いて色んな所から参照($ref)している.

ただこの記法はクソややこしいのでこれが正しいとも限らない(ちゃんと展開できないライブラリとかも多い).そこで,たとえばQiitaのJSON SchemaはおそらくJsonWorldのDSLでSchemaを記述しており,$refdefinitionは出てこない.こんな感じのDSLで書くとクラス参照することで$refの代わりになるしわかりやすくていい感じかもしれない.


References