Код:
it.only('should display logs in color when using chalk', () => {
// Setup.
const uuid = uuidv4();
const messages = [
// prettier-ignore
[`${uuid}_chalk_info`, '\[37mINFO\[39m'],
[`${uuid}_chalk_debug`, '\[36mDEBUG\[39m'],
[`${uuid}_chalk_trace`, '\[32mTRACE\[39m']
];
testLog(messages[0][1]);
const log = languramaLog({ ...defaultTerminalConfiguration, level: 'trace', chalk });
const mock = jest.spyOn(process.stdout, 'write').mockImplementation(() => {});
// Test.
log.info(messages[0][0]);
log.debug(messages[1][0]);
log.trace(messages[2][0]);
// Assert.
expect(mock).toHaveBeenCalledTimes(3);
expect(mock).toHaveBeenCalledWith(jasmine.stringMatching(messages[0][1]));
expect(mock).toHaveBeenCalledWith(jasmine.stringMatching(messages[1][1]));
expect(mock).toHaveBeenCalledWith(jasmine.stringMatching(messages[2][1]));
});
Ошибка:
SyntaxError: Invalid regular expression: /INFO/: Unterminated character class
at new RegExp (<anonymous>)
359 | // Assert.
360 | expect(mock).toHaveBeenCalledTimes(3);
> 361 | expect(mock).toHaveBeenCalledWith(jasmine.stringMatching(messages[0][1]));
| ^
362 | expect(mock).toHaveBeenCalledWith(jasmine.stringMatching(messages[1][1]));
363 | expect(mock).toHaveBeenCalledWith(jasmine.stringMatching(messages[2][1]));
364 | });
Поэтому я использую пакет chalk
для создания цветов для некоторых журналов, которые я хотел бы проверить, чтобы убедиться, что журналы печатаются на терминал. Однако RegEx в жасмине, кажется, жалуются, есть идеи?
Следующее прекрасно работает:
const log = new RegExp(/\[37mINFO\[39m/);
const result = log.test('[90m2020-05-02 23:54:51 UTC+2[39m [37mINFO[39m 2df268af-af1f-42f0-b098-d52fb0123d95_chalk_info [90m/home/karl/dev/langurama/log/test/index.node.spec.js:358:17[39m');
console.log(result); // true