TypeError:service.getValue不是Angular2单元测试服务的功能



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。

最新更新