тестами?
Пример кода фабрики:
export class ItemFactory {
public static createItem = jest.fn()
.mockReturnValueOnce('1')
.mockReturnValueOnce('2')
.mockReturnValueOnce('3')
.mockReturnValueOnce('4')
}
Пример кода тестов:
import { ItemFactory } from '@/assets/ts/item-factory';
jest.mock('@/assets/ts/item-factory');
beforeEach(() => {
jest.clearAllMocks();
});
it('foo', () => {
ItemFactory.createItem();
ItemFactory.createItem();
// Пройдет
expect(ItemFactory.createItem.mock.result[0].value)
.toEqual('1');
expect(ItemFactory.createItem.mock.result[1].value)
.toEqual('2');
});
it('foo2', () => {
ItemFactory.createItem();
ItemFactory.createItem();
// Пройдет
expect(ItemFactory.createItem.mock.result[0].value)
.toEqual('3');
expect(ItemFactory.createItem.mock.result[1].value)
.toEqual('4');
// Упадет
expect(ItemFactory.createItem.mock.result[0].value)
.toEqual('1');
expect(ItemFactory.createItem.mock.result[1].value)
.toEqual('2');
});
Вопрос, как сбрасывать mockReturnValueOnce между тестами, чтобы в каждом тесте он возвращал значения начиная с первого(1, 2, 3)
в beforeEach добавить ItemFactory.createItem.mockClear() или ItemFactory.createItem.mockReset() если не поможет, то в beforeEach делать ItemFactory.createItem = jest.fn()...
Обсуждают сегодня