2017-08-14 31 views
0

jsonスキーマを使用してapiのjsonを検証しようとしています。ajvでjsonスキーマを検証する際にエラーの種類/値を取得する

私はnode.jsで最も人気のあるajvライブラリを見つけました。ただ、基本を取得し、私はその後、私のバリデータ

import Ajv from 'ajv'; 

import viewSchema from './viewSchema'; 
const ajv = Ajv({allErrors: true}); 
let validate = ajv.compile(viewSchema); 

const validateView = viewJson => { 
    var isValid = validate(viewJson); 
    console.log('------ text',ajv.errorsText(), isValid) 
    if(isValid) return true; 
    return ajv.errorsText(); 
} 

export default validateView; 

と(mochaccino付き)モカを使用してにインポート

const viewSchema = { 
    "type": "object", 
    "properties":{ 
     "title": {"type": "string"} 
    } 
} 

export default viewSchema; 

としての私のスキーマを定義した

は出力

をテスト
describe('validate view',() => { 
    it('should error if title is not a string',() => { 
     console.log('-----------',validateView({"title":122})) 
     expect(validateView({"title":122}).errors).toContain('should be string'); 
    }); 
}); 

ajv github pageからの指示に従います。タイプが必要なためテストが失敗することが予想されますdは文字列であり、数値を提供しています。しかし、私がajv.errorsText()から得ている応答はNo Errorsであり、エラーが発生するはずです。

私は間違っていますか?

答えて

2

あなたはajv.errorsText()にエラーを渡す必要があります。

ajv.errorsText(validate.errors) 

パラメータずにメソッドajv.validateを使用する場合には、エラーのテキストを返します。 (!有効)はconsole.log(ajv.errorsText())場合

https://github.com/epoberezkin/ajv#errorstextarrayobject-errors--object-options---string

+0

感謝を参照してください、主要なドキュメントは '言う;'ので、私はそれで行っていました。 – pedalpete

+0

はい、ajv.validateを使用している場合です。 errorsTextを前の例に追加する必要があります。 – esp

関連する問題