我正在尝试在测试用例中验证猫鼬模式(使用笑话),但我无法做到这一点,它甚至不执行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)
});
答案 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);
});