在我的组件类中,我的方法getUsers()使用名为getData()的服务。在单元测试中,我想测试我的方法是否成功调用了getData()。因此,我这样做是编写了一个简单的测试,但是我认为我缺少一些东西。在测试中,我注入了服务,并创建了该服务的假同步。从那里,我扩展了我的服务和方法getData。然后,我执行我的方法getUsers()。最后,我希望getData被调用。运行测试时,出现以下错误:$thumb = VideoThumbnail::createThumbnail(public_path('stories/videos/21530251287.mp4'), public_path("images/"), 'thumb.jpg', 2, 600, 600);
。我认为我没有正确使用spyOn。这是隔离测试:
TypeError: this.httpService.getData(...).catch is not a function
我当时在想这可能与我如何设置规范类有关?这是我的设置方式
it('should have getUsers() call the service GetData()', inject([HttpService], fakeAsync((httpService) => {
let url = AppConfig.URL_UsersList //AppConfig is importerd
spyOn(httpService, 'getData').and.returnValue(url);
dashboardComponent.getUsers();
expect(httpService.getData()).toHaveBeenCalled();
})))
这是我要测试的功能:
describe('Dashboard Component', () => {
let httpService: HttpService;
let dashboardComponent: DashboardComponent
let fixture: ComponentFixture<DashboardComponent>
//let element;
beforeEach(async() => {
TestBed.configureTestingModule({
declarations: [
DashboardComponent
],
providers: [
HttpService
],
}).compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(DashboardComponent);
dashboardComponent = fixture.componentInstance;
});
我的目标是让我的测试成功检查使用我的getUsers方法时是否正在调用getData。谢谢!
编辑:所以我收到此错误的原因是因为我的组件返回了一个可观察的对象,所以我刚刚返回了一个字符串。这是更新的行。我怀疑它工作正常,因为现在我收到一个完全不相关的错误消息,指出未定义属性API。
getUsers() {
this.httpService.getData(AppConfig.URL_UsersList)
.catch((error: Response | any) => {
this.showAlertWindow(this.exceptionMessage);
console.error(error.message || error);
return Observable.throw(error.message || error);
})
.subscribe((res: any) => {
this.rowData = res;
this.redrawAgGrid();
});
}
答案 0 :(得分:1)
阅读消息。它说:
this.httpService.getData(...)。catch不是函数
因此,它调用getData()
,然后对.catch()
返回的值调用getData()
,但由于getData()
不返回包含{ {1}}方法。
所以
catch()
,并且该消息抱怨this.httpService.getData(...).subscribe()
this.httpService.getData(...).catch
,我想那不是一个应许。