Непроверенные строки - это функция обратного вызова, передаваемая Sentry.withScope
:
scope => {
scope.setExtras(errorInfo);
Sentry.captureException(error);
}
Поскольку Sentry.withScope
подвергся насмешке, вы можете использовать mockFn.mock.calls
для получения функции обратного вызовапередается ему.
После того, как вы получили функцию обратного вызова, вы можете вызвать ее напрямую, чтобы протестировать.
Вот несколько упрощенный рабочий пример:
import * as Sentry from '@sentry/browser';
jest.mock('@sentry/browser'); // <= auto-mock @sentry/browser
const componentDidCatch = (error, errorInfo) => {
Sentry.withScope(scope => {
scope.setExtras(errorInfo);
Sentry.captureException(error);
});
};
test('componentDidCatch', () => {
componentDidCatch('the error', 'the error info');
const callback = Sentry.withScope.mock.calls[0][0]; // <= get the callback passed to Sentry.withScope
const scope = { setExtras: jest.fn() };
callback(scope); // <= call the callback
expect(scope.setExtras).toHaveBeenCalledWith('the error info'); // Success!
expect(Sentry.captureException).toHaveBeenCalledWith('the error'); // Success!
});
Обратите внимание, что эта строка:
const callback = Sentry.withScope.mock.calls[0][0];
... получает первый аргумент первого вызова для Sentry.withScope
, который является функцией обратного вызова.