Frisby/Jest не показывает название поля, вызвавшего ошибку

Я написал свой первый тест, используя Фрисби, и у меня было странное поведение.

Это часть моего тестового файла:

it('check function', function (done) {
  frisby.get(BASE_URL + 'check')
    .expect('status', 200)
    .done(done);
});

it('user login', function (done) {
  frisby.post(BASE_URL + 'login', user)
    .expect('status', 200)
    .expect('jsonTypes', 'id', Joi.number().required())
    .expect('jsonTypes','email', Joi.string().email().required())
    .expect('json','emailConfirmed', 1)
    .expect('jsonTypes','name', Joi.string().required())
    .expect('jsonTypes','surname', Joi.string().required())
    .expect('jsonTypes','avatar', Joi.string()) 
    .expect('jsonTypes','city', Joi.string().required())   
    .expect('jsonTypes','token', Joi.string().required())
    .expect('json','role', 'user')
    .done(done);
});

и работает отлично!

Если я изменю эту строку

.expect('jsonTypes','name', Joi.string().required())

со следующим

.expect('jsonTypes','name', Joi.number().required())

Я получаю этот вывод

● user login

    ValidationError: "value" must be a number

      at Object.<anonymous>.exports.process (node_modules/joi/lib/errors.js:152:19)
      at Object.<anonymous>.internals.Number.Object.<anonymous>.internals.Any._validateWithOptions (node_modules/joi/lib/any.js:633:27)
      at Object.<anonymous>.module.exports.internals.Any.root.validate (node_modules/joi/lib/index.js:104:23)
      at jsonTypesAssertion (node_modules/frisby/src/frisby/expects.js:104:24)
      at Object.withPath (node_modules/frisby/src/frisby/utils.js:67:12)
      at FrisbySpec.jsonTypes (node_modules/frisby/src/frisby/expects.js:103:11)
      at FrisbySpec._addExpect.response (node_modules/frisby/src/frisby/spec.js:368:23)
      at FrisbySpec._runExpects (node_modules/frisby/src/frisby/spec.js:260:24)
      at _fetch.fetch.then.then.responseBody (node_modules/frisby/src/frisby/spec.js:139:14)
      at process._tickCallback (internal/process/next_tick.js:109:7)

Я должен ожидать получить

"name" must be a number

для того, чтобы сразу выявить ошибку в моем API.

Более того, если я изменю свой API, удалив поле "имя", я получу этот вывод

  ● user login

    ValidationError: "value" is required

Кажется, что Jest показывает вывод Joi, а Joi не знает имени поля. Но шутка есть, поэтому она должна показывать правильное имя поля, вызывающего ошибку.

Я что-то пропустил?

0 ответов

Другие вопросы по тегам