Я только начал работать с ts-mockito и до сих пор мне очень понравилось. Я сталкиваюсь с проблемой, в которой мне нужно смоделировать метод mocked свойства.
Я попытался смоделировать метод напрямую when(wrapperMock.tps.isBlue()).thenReturn(true);
, но получил сообщение об ошибке Cannot read property 'isTrue' of undefined
.
Я подумал, что могу быть хитрым и издеваться над сторонней службой, настроить возврат для его метода, а затем вернуть экземпляр службы, когда моя обертка вызовет его.
tpsMock = mock(ThridPartyService);
wrapperMock = mock(Wrapper);
when(tpsMock.isBlue()).thenReturn(true);
when(wrapperMock.tps).thenReturn(instance(tpsMock));
Однако я получаю сообщение об ошибке wrapperMock.tps.isBlue is not a function
.
Я занимался этим несколько часов, и ни одна из проблем с статьями / ts-mockito git, с которыми я столкнулся, не помогла. Я не уверен, стоит ли сообщать об этой ошибке или я делаю что-то не так. Надеюсь, кто-то с большим опытом может указать мне правильное направление. Пожалуйста, найдите пример проблемы ниже:
TypeScript v3.7.5
ts-mockito v2.5.0
export class ThridPartyService {
public isBlue(): boolean {
return false;
}
}
export class Wrapper {
public tps = new ThridPartyService();
}
export class ServiceToTest {
constructor(public wrapper: Wrapper) {}
public isTrue(): boolean {
return this.wrapper.tps.isBlue();
}
}
describe('', () => {
let tpsMock: ThridPartyService;
let wrapperMock: Wrapper;
let serviceToTest: ServiceToTest;
beforeEach(() => {
tpsMock = mock(ThridPartyService);
wrapperMock = mock(Wrapper);
when(tpsMock.isBlue()).thenReturn(true);
when(wrapperMock.tps).thenReturn(instance(tpsMock));
serviceToTest = new ServiceToTest(instance(wrapperMock));
});
it('', () => {
const returnedValue = serviceToTest.isTrue();
expect(returnedValue).toBe(true);
verify(wrapperMock.tps.isBlue()).once();
});
});