我正在尝试测试需要其他服务的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
(不带引号)就是这样的功能:
我无法分配属性,这是怎么做的?我还尝试将Partial上的分配打破到对象实例化之外的新行。 Partial<T>
不允许功能分配吗?我无法在文档中找到任何内容。