var assert = require('assert'); var JSONFileMetricsReporter = require('../../lib/metrics/jsonfilemetricsreporter').JSONFileMetricsReporter; var Metrics = require('../../lib/metrics/metrics'); var os = require('os'); var fs = require('fs'); var path = require('path'); describe('JSONFileMetricsReporter', function () { before(() => { Metrics.clearReportHooks(); }); describe('#report', function () { it('reports metrics to file', function (done) { const outfile = path.resolve(os.tmpdir(), 'metrics' + Math.random() + '.txt'); const reporter = new JSONFileMetricsReporter(outfile); Metrics.setReporter(reporter); Metrics.incCounter('abc'); Metrics.incCounter('abc'); Metrics.incCounter('def', 10); Metrics.addProperty('foo', { bar: 'baz' }); Metrics.flush(); setTimeout(function () { const contents = String(fs.readFileSync(outfile)); const data = JSON.parse(contents); assert.strictEqual(data.abc, 2); assert.strictEqual(data.def, 10); assert.deepStrictEqual(data.foo, { bar: 'baz' }); fs.unlinkSync(outfile); done(); }, 100); }); }); });