Вот фрагмент из моего кода в TypeScript:
let myService: MyService;
let myController: MyController;
beforeAll(async function () {
myService = new MyService(null);
myController = new MyController(myService);
});
it("should fail due to any 'MyService' error", () => {
jest.spyOn(myService, 'create').mockImplementation(() => {
throw new Error(); // ! the test fails here
});
expect(myController.create(data)).toThrowError(Error);
});
Метод create
для MyController
не является асинхронным , а также MyService
: обапросто обычные методы.Теперь, когда я пытаюсь запустить этот тест, он завершается с ошибкой в строке смоделированного метода, где генерируется исключение: throw new Error()
, и он работает правильно, только если я оберну вызов метода create
с try/catch
следующим образом:
try {
expect(myController.create(data)).toThrowError(Error);
}
catch { }
Это выглядит очень странно для меня.Разве это не должно работать без упаковки в try/catch
по замыслу?