Sentry Testkit

了解如何断言正确的流程跟踪或错误被发送到 Sentry,但不实际发送到 Sentry 服务器。

在为应用程序构建测试时,您希望断言正确的流程跟踪或错误被发送到 Sentry,但不实际发送到 Sentry 服务器。这样可以避免在测试运行或其他 CI 操作期间向 Sentry 发送虚假报告。

Sentry Testkit 是一个由社区维护的 Sentry 插件,允许拦截 Sentry 的报告以进行进一步的数据检查。它通过覆盖 Sentry 的默认传输机制,使报告不会真正发送出去,而是记录到本地内存中。这样一来,稍后可以获取这些已记录的报告,用于您自己的用途、验证或其他目的,特别是在本地开发或测试环境中。

Copied
npm install sentry-testkit --save-dev

Copied
import sentryTestkit from "sentry-testkit";

const { testkit, sentryTransport } = sentryTestkit();

// initialize your Sentry instance with sentryTransport
Sentry.init({
  dsn: "https://examplePublicKey@o0.ingest.sentry.io/0",
  transport: sentryTransport,
  //... other configurations
});

test("collect error events", function () {
  // run any scenario that eventually calls Sentry.captureException(...)
  expect(testkit.reports()).toHaveLength(1);
  const report = testkit.reports()[0];
  expect(report).toHaveProperty(/*...*/);
});

// Similarly for performance events
test("collect performance events", function () {
  // run any scenario that eventually calls Sentry.startTransaction(...)
  expect(testkit.transactions()).toHaveLength(1);
});

您也可以参考 sentry-testkit 仓库中的测试示例

Sentry Testkit 拥有一个非常简单直观的 API。 请参阅 Sentry Testkit 文档 以获取完整的 API 描述和文档。