Вы можете издеваться над глобальными FileReader
, как это:
const mockReader: FileReader = jasmine.createSpyObj('FileReader', ['readAsBinaryString']);
spyOn(window as any, 'FileReader').and.returnValue(mockReader);
И тогда в вашем модульном тесте это должно работать как положено:
it('test', () => {
...
catalog.insert(someMockData);
expect(catalog.reader.readAsBinaryString).toHaveBeenCalled();
});
Проверьте это демонстрация stackblitz
Редактировать
Если вы вызываете new FileReader()
в методе вставки (в начале), чтобы вы могли смоделировать FileReader
внутри it
(или внутри beforeEach
метода, если у вас есть несколько похожих модульных тестов):
it('test', () => {
const mockReader: FileReader = jasmine.createSpyObj('FileReader', ['readAsBinaryString']);
spyOn(window as any, 'FileReader').and.returnValue(mockReader);
// other mocks
catalog.insert(someMockData);
expect(catalog.reader.readAsBinaryString).toHaveBeenCalled();
// other expects
});