A very strict mocking library for class based objects.
- node: 12
Through NPM as @chubbyjs/chubbyjs-mock.
npm i @chubbyjs/chubbyjs-mock@1.0
import { expect, test } from '@jest/globals';
import ArgumentCallback from '@chubbyjs/chubbyjs-mock/dist/Argument/ArgumentCallback';
import ArgumentInstanceOf from '@chubbyjs/chubbyjs-mock/dist/Argument/ArgumentInstanceOf';
import Call from '@chubbyjs/chubbyjs-mock/dist/Call';
import MockByCalls from '@chubbyjs/chubbyjs-mock/dist/MockByCalls';
test('example', () => {
class DateTimeService {
public format(date: Date, format: string) {}
}
const mockByCalls = new MockByCalls();
const dateTimeService = mockByCalls.create<DateTimeService>(DateTimeService, [
Call.create('format')
.with(new ArgumentInstanceOf(Date), 'c')
.willReturn('2004-02-12T15:19:21+00:00'),
Call.create('format')
.with(new ArgumentCallback((date: Date) => expect(date).toBeInstanceOf(Date)), 'c')
.willReturn('2008-05-23T08:12:55+00:00'),
]);
expect(dateTimeService.format(new Date(), 'c')).toBe('2004-02-12T15:19:21+00:00');
expect(dateTimeService.format(new Date(), 'c')).toBe('2008-05-23T08:12:55+00:00');
// if you want to be sure, that the mocked calls and the method call matches
expect(dateTimeService.__mockByCalls.calls.length).toBe(dateTimeService.__mockByCalls.index);
});
Dominik Zogg 2021