Частичный класс и установка свойства функции - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь проверить Службу Angular, для которой требуется другая Служба, и обнаружил их документацию по теме .Что мне нужно сделать, так это использовать Partial<T> Typescript моего сервиса, и это создаст для меня издевательство.

Однако свойство, которое я пытаюсь использовать в моем партиале, является функцией.Всякий раз, когда я пытаюсь использовать функцию, она всегда возвращает undefined.

export class MyService {
    public string bar = 'bar';

    getType: Observable<MyType> {
        // implementation detail
    }
}

Мой файл спецификаций:

describe('FooService',
    () => {
        let serviceStub: Partial<MyService>;
        let service: MyService;

        beforeEach(() => {
            serviceStub = {
                bar: 'foo',
                getType: () => {
                    return Observable.create(MyType.Two);
                }
            };

            TestBed.configureTestingModule({
                providers: [
                    FooService,
                    {
                        provide: MyService,
                        useValue: serviceStub
                    }
                ]
            });

            myService = TestBed.get(MyService);
        });

        it('when myService getType is called will not be undefined',
            () => {
                const observable = myService.getType();

                // This fails
                expect(observable).not.toBeUndefined();
            });
    });

Если в тесте поставить точку останова, myService.getType (без кавычек) это такая функция:

f () { return fn.apply(this, arguments); }

Что я делаю не так, что не могу присвоить свойство?Я также попытался разорвать присваивание в Частичном новой строке за пределами экземпляра объекта.Partial<T> не разрешает назначение функций?Я не смог ничего найти в документах.

...