Я пытаюсь использовать Mocha с ts-node для написания юнит-теста в TypeScript для моего проекта.Когда я использую Sinon для шпиона асинхронной функции, я не могу пройти тест.Ниже мой код
class MyClass {
async businessFunction(param): Promise<void> {
if (!param) //Validate the input
throw new Error("input must be valid");
// Then do my business
}
}
И юнит-тест
describe("The feature name", () => {
it("The case of invalid", async () => {
const theObject = new MyClass();
const theSpider = sinon.spy(theObject, "businessFunction");
try {
await theObject.businessFunction(undefined);
} catch (error) {/* Expected error */}
try {
await theObject.businessFunction(null);
} catch (error) {/* Expected error */}
sinon.assert.calledTwice(theSpider); // => Passed
sinon.assert.alwaysThrew(theSpider); // => Failed, why?
theSpider.restore();
});
});
У кого-нибудь был опыт, чтобы справиться с этим?Мне предложили сделать проверки с обнаруженными ошибками, но это кажется сложным и заставляет код проверки дублироваться без необходимости.