Skip to content

Test helper to make it easier to run asserts on produced metrics

Notifications You must be signed in to change notification settings

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.

About

Test helper to make it easier to run asserts on produced metrics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •