in packages/bonito-core/src/logging/mock-logger.ts [72:132]
private _popAndAssert(
level: LogLevel,
message: string,
...args: unknown[]
) {
if (!this.enableChecking) {
// If checking is not enabled, this is a no-op
return;
}
const argsMatch = (
expectedArgs?: unknown[],
actualArgs?: unknown[]
) => {
// If one is undefined or null, both must be
if (expectedArgs == null || actualArgs == null) {
return expectedArgs == null && actualArgs == null;
}
// Length mismatch is an automatic failure
if (expectedArgs.length !== actualArgs.length) {
return false;
}
// Check each arg
for (let i = 0; i < expectedArgs.length; i++) {
const expected = expectedArgs[i];
const actual = actualArgs[i];
if (expected instanceof Error) {
if (String(expected) !== String(actual)) {
return false;
}
} else {
if (expected !== actual) {
return false;
}
}
}
// All arguments matched
return true;
};
const expected = this.popExpected();
if (
expected.level !== level ||
expected.message !== message ||
!argsMatch(expected.args, args)
) {
throw new Error(
`Expected message did not match actual.\n\nExpected:\n${MockLogger._formatSummary(
expected.level,
expected.message,
expected.args
)}\n\nActual:\n${MockLogger._formatSummary(
level,
message,
args
)}`
);
}
}