Currently I have this test:
import toHoursMinutes from '../../../app/utils/toHoursMinutes';
describe('app.utils.toHoursMinutes', () => {
it('should remove 3rd group of a time string from date object', async () => {
expect(toHoursMinutes(new Date('2020-07-11T23:59:58.000Z'))).toBe('19:59');
});
});
What toHoursMinutes does is to receive a Date object and transform it like this way:
export default (date) => `${('' + date.getHours()).padStart(2, '0')}:${('' + date.getMinutes()).padStart(2, '0')}`;
My local time offset is -4 so my test pass ok if I compare 23:59 with 19:59, but I want to run the test anywhere, so I prefer to compare the output of toHoursMinutes() with a regex expression like this one, that check the hh:mm format: ^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$
But how can I use a regex to compare instead a explicit string?
I tried this:
const expected = [
expect.stringMatching(/^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$/)
];
it.only('matches even if received contains additional elements', () => {
expect(['55:56']).toEqual(
expect.arrayContaining(expected)
);
});
But I get a:
Expected: ArrayContaining [StringMatching /^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$/]
Received: ["55:56"]