typeerror:service.getValue不是函数
let data: string;
@Injectable()
export class MyService {
constructor() {
myOtherObservableReturning.subscribe((data: mydata) => {
data.items.forEach((item: Object) => {
.....
}
...
...
});
}
public getValue() { return 'HelloWorld'; }
}
单元测试:
let service: MyService;
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
{ provide: MyService, useValue: { data: Observable.of(dataStub) } }
]
});
service = TestBed.get(MyService);
});
it('should be created', () => {
expect(service).toBeTruthy();
console.log(JSON.stringify(service));
//LOG: '{"params":{"_isScalar":true,"scheduler":null}}'
});
it('should call getValue', () => {
//TypeError: service.getValue is not a function
expect(service.getValue()).toBe('HelloWorld');
});
我无法弄清楚为什么单位测试无法找到函数getValue()
,我已经在服务文件中导入并检查了该功能。
确保您给出了service: MyService
的类型。如果未指定类型,则仅假设一个变量为any
类型。
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
{ provide: MyService, useValue: { data: Observable.of(dataStub) } }
]
});
service: MyService = TestBed.get(MyService);
});
问题解决了:我需要将 data.items
初始化为空数组。这是不确定的,这就是为什么错误 Cannot read property 'forEach' of undefined
pop。