У меня есть тестовый пример, который выглядит следующим образом:
it("should throw when the template file does not exist", async (): Promise<void> => {
await expect(new UpdateReadmeCommandlet().invoke()).to.be.rejectedWith(Error);
});
И соответствующий метод invoke
следующий:
public async invoke(): Promise<void> {
fs.readFile(this.templatePath, (outerError: NodeJS.ErrnoException, data: Buffer): void => {
if (outerError !== null) {
throw new Error(`FileNotFoundException: Cannot find file \`${this.templatePath}'.`);
}
});
}
Этот тест настроен так, чтобы эта ошибкаброшенПри запуске mocha
я получаю некоторые действительно неловкие сообщения об ошибках, и все происходит повсюду, что, скорее всего, связано с асинхронными вызовами.Я получаю сообщение об ошибке: AssertionError: expected promise to be rejected with 'Error' but it was fulfilled with undefined
.
Мой тест написан на основе этого ответа .Удивительно, но когда я копирую метод fails
, он работает так, как описано в посте.Обмен директивой throw
с моим вызовом invoke
вызывает проблемы.Поэтому я предполагаю, что мой invoke
метод должен работать по-другому.
Я до сих пор не могу понять, что на самом деле не так, и как я могу переписать свой тест st, не мешает другим тестам, и это проверяет мое утверждение правильно.