Skip to content

metrics-js/test-consumer

Repository files navigation

@metrics/test-consumer

Dependencies GitHub Actions status Known Vulnerabilities

This module is a memory based consumer for metrics streams to be used in tests. The purpose of the module is to make writing tests and asserting metrics easier. It takes a metric stream generated by @metrics/client and makes the collected metrics available as an array.

⚠️ You should never use this in produciton code, however it is very convenient when writing tests which produce metrics using @metrics/client

Examples usage

Below is a sample test showing how this could be used:

const assert = require("node:assert");
const { test } = require("node:test");
const MetricsClient = require("@metrics/client");
const TestConsumer = require("@metrics/test-consumer");

test("some test case", async () => {
  // Pass in the metrics client you want to consume.
  const metrics = new MetricsClient();
  const testHelper = new TestConsumer(metrics);
  // Sets up the consumer to capture events.
  testHelper.start();

  // 👋 Your code which produces some kind of metric goes here.

  // Ends the streams, now we can get the result.
  testHelper.stop();

  const result = await testHelper.getResults();
  const metric = result.find((m) => m.name === "some_counter");

  assert.ok(metric, "Expected to find metric some_counter");
  assert.equal(metric.value, 2);
});

API

constructor(metrics)

Takes in the @metrics/client to collect metrics from.

.start()

Creates a readable stream which listens for metrics produced by the client.

.stop()

Ends the stream setup for the client, returns a Promise which resolves to an array with the metrics consumed.

async .getResults()

Returns a promise which resolves to an array containing collected [@metrics/metrics](https://metrics-js.github.io/reference/metric/) objects.

createMetrics

Utility object with functions for creating mock Metric objects, has the functions .timer and .counter.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •