@metrics/test-consumer
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 production 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 an instance of @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/metric objects.
createMetrics
Utility object with functions for creating mock Metric
objects, has the functions .timer
and .counter
.