如何使用玩笑来验证猫鼬模式?

时间:2020-04-17 04:14:09

标签: javascript node.js mongoose jestjs mongoose-schema

我正在尝试在测试用例中验证猫鼬模式(使用笑话),但我无法做到这一点,它甚至不执行validate方法。我在validate方法中获得了一些控制台语句,该方法是回调,永远不会执行。有人请帮我。
执行测试用例时出现错误(测试完成后无法记录。您是否忘记等待测试中的异步操作?

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 :(得分:0)

问题在于对validate方法的调用是异步的,但是您的测试没有等待操作完成。这导致您的console.log在测试完成后被执行。因此,您得到错误:

测试完成后无法记录。您是否忘了等待测试中的异步操作?

由于validate的{​​{3}} API声明它返回了一个承诺,因此您可以在做出期望之前等待该承诺:

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);
});
相关问题