В C ++ объект производного класса может быть назначен объекту базового класса, но другой способ невозможен.
class Base { int x, y; };
class Derived : public Base { int z, w; };
int main()
{
Derived d;
Base b = d; // Object Slicing, z and w of d are sliced off
}
Обрезка объектов происходит, когда объект производного класса присваивается базе объект класса, дополнительные атрибуты объекта производного класса вырезаются для формирования объекта базового класса.
В настоящее время Jest не предоставляет никакой конфигурации резолвера для шаблонов ложных регулярных выражений. Вместо этого вы можете создавать собственные автоматические классы, как это описано в документации .
import AutomaticMock from './a.mock';
jest.mock('./a.mock');
beforeEach(() => {
AutomaticMock.mockClear();
});
it('Create an instance of my AutomaticMock', () => {
const mock = new AutomaticMock();
expect(AutomaticMock).toHaveBeenCalledTimes(1);
});
it('Clear any instances of my AutomaticMock', () => {
expect(AutomaticMock).not.toHaveBeenCalled();
});
Имейте в виду, что в тот момент, когда вы вызываете jest.mock('./a.mock')
, создается фиктивный экземпляр вашего класса, который заменяет все его методы на фиктивные функции, которые всегда возвращают undefined
.