局部类和设置函数属性

时间:2019-02-11 18:15:54

标签: typescript partials

我正在尝试测试需要其他服务的Angular服务,并发现了their documentation on the subject。我需要做的是使用服务的Typescript Partial<T>,然后为我创建模拟。

但是,我要在我的局部对象中使用的属性是一个函数。每当我尝试使用该函数时,它总是返回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上的分配打破到对象实例化之外的新行。 Partial<T>不允许功能分配吗?我无法在文档中找到任何内容。

0 个答案:

没有答案