Как проверить схему mon goose, используя jest? - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь проверить схему mon goose в тестовом примере (используя jest), но я не могу этого сделать, он даже не выполняет метод validate. Мне дают некоторые консольные операторы внутри метода validate, который является обратным вызовом, который никогда не выполняется. кто-то, пожалуйста, помогите мне с этим.
Я получаю сообщение об ошибке при выполнении тестового примера ( Невозможно войти в систему после завершения тестов. Вы забыли подождать, пока что-нибудь асин c в вашем тесте? )

sample.test.ts

it('validating document', async () => {
  const peopleSchema = new mongoose.Schema({
    name: String,
    age: Number,
  });
  const People = mongoose.model('People', peopleSchema);
  const p = new People({
    name: 'you',
    age: 3,
  });
  p.validate(function(err) {
    if (err) console.log(err);
    else console.log('pass validate');
  });
  expect(true).toBe(true); // verification should be for valid document. something like expect(document).toBe(valid)
});

1 Ответ

0 голосов
/ 17 апреля 2020

Проблема в том, что вызов метода validate является асинхронным, но ваш тест не ожидает завершения операции sh. Это приводит к тому, что ваш console.log выполняется после завершения теста. Следовательно, вы получаете ошибку:

Невозможно войти в систему после завершения испытаний. Вы забыли подождать что-нибудь асинхронное c в своем тесте?

Поскольку в документации API для метода validate указано, что он возвращает обещание, вы можете ожидать, что обещание, прежде чем сделать ваши ожидания:

it('validating document', async () => {
    const peopleSchema = new mongoose.Schema({
        name: String,
        age: Number,
    });

    const People = mongoose.model('People', peopleSchema);

    const p = new People({
        name: 'you',
        age: 3,
    });

    const err = await p.validate();

    // If the validation passes, the validate function returns undefined.
    expect(err).toBe(undefined);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...