E2e测试角度7:失败:无法读取未定义的属性';fetchData'; [英] e2e testing angular 7: Failed: Cannot read property 'fetchData' of undefined
本文介绍了E2e测试角度7:失败:无法读取未定义的属性';fetchData';的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试为我的服务做一些e2e测试,角度7,该方法返回Observable,这是我的方法:
import { Injectable } from '@angular/core';
import { UrlDecoratorService } from "../../common/url-decorator.service";
import { APIFetcherService } from "../common/api-fetcher.service";
import { Observable } from 'rxjs';
import { IALChrono, ALChrono } from '../../common/IALChrono.interface';
@Injectable()
export class AnnonceChronoDetailService {
private months: string[];
constructor(private urlDecoratorService: UrlDecoratorService, private apiFetcher: APIFetcherService) {
}
fetchData(chronoInfo: ALChrono): Observable<any> {
// construct API parameters and URL
var URL: string = this.urlDecoratorService.urlAPIDecorate("AL", "GetAccessChrono");
var params = this.urlDecoratorService.generateParameters({
year: chronoInfo.year,
month: chronoInfo.month,
sortBy: chronoInfo.sortBy,
sortDirection: chronoInfo.sortDirection,
pageNumber: chronoInfo.currentPage,
pageSize: chronoInfo.pageSize
});
return this.apiFetcher.fetchJson(URL, params);
}
}
这是我的测试:
import { AppPage } from './app.po';
import { AnnonceChronoDetailService } from '../../src/app/services/annonce-legale/annonce-chrono-detail.service';
import { ALChrono } from '../../src/app/common/IALChrono.interface';
import { APIResponse } from '../../src/app/common/api-response.interface';
import { Observable } from 'rxjs';
describe('workspace-project App', () => {
let page: AppPage;
let service: AnnonceChronoDetailService;
this.chronoInfo = new ALChrono(); //it's a class
beforeEach(() => {
page = new AppPage();
});
it('should display welcome message', () => {
page.navigateTo();
expect(page.getParagraphText()).toEqual('Welcome to MyProject!');
});
it('#getObservableValue should return value from observable', (done: DoneFn) => {
service.fetchData(this.chronoInfo).subscribe((resp: APIResponse) => {
expect(resp.dataCount).toBe(5);
done();
});
});
});
这是我的终端错误:
DevTools listening on ws://127.0.0.1:53112/devtools/browser/2a1d94b2-ef47-4910-9ee2-e875b615ed45
Jasmine started
workspace-project App
√ should display welcome message
× #getObservableValue should return value from observable
- Failed: Cannot read property 'fetchData' of undefined
at UserContext.<anonymous> (D:Fronte2esrcapp.e2e-spec.ts:34:13)
at new ManagedPromise (D:Front
ode_modulesprotractor
ode_modulesselenium-webdriverlibpromise.js:1077:7)
at ControlFlow.promise (D:Front
ode_modulesprotractor
ode_modulesselenium-webdriverlibpromise.js:2505:12)
at TaskQueue.execute_ (D:Front
ode_modulesprotractor
ode_modulesselenium-webdriverlibpromise.js:3084:14)
at TaskQueue.executeNext_ (D:Front
ode_modulesprotractor
ode_modulesselenium-webdriverlibpromise.js:3067:27)
at asyncRun (D:Front
ode_modulesprotractor
ode_modulesselenium-webdriverlibpromise.js:2974:25)
at D:Front
ode_modulesprotractor
ode_modulesselenium-webdriverlibpromise.js:668:7
at <anonymous>
From: Task: Run it("#getObservableValue should return value from observable") in control flow
at ControlFlow.emit (D:Front
ode_modulesprotractor
ode_modulesselenium-webdriverlibevents.js:62:21)
at ControlFlow.shutdown_ (D:Front
ode_modulesprotractor
ode_modulesselenium-webdriverlibpromise.js:2674:10)
at shutdownTask_.MicroTask (D:Front
ode_modulesprotractor
ode_modulesselenium-webdriverlibpromise.js:2599:53)
From asynchronous test:
Error
at Suite.<anonymous> (D:Fronte2esrcapp.e2e-spec.ts:33:3)
at Object.<anonymous> (D:Fronte2esrcapp.e2e-spec.ts:7:1)
at Module._compile (module.js:635:30)
at Module.m._compile (D:Front
ode_modules s-nodesrcindex.ts:439:23)
at Module._extensions..js (module.js:646:10)
at Object.require.extensions.(anonymous function) [as .ts] (D:Front
ode_modules s-nodesrcindex.ts:442:12)
**************************************************
* Failures *
**************************************************
1) workspace-project App #getObservableValue should return value from observable
- Failed: Cannot read property 'fetchData' of undefined
Executed 2 of 2 specs (1 FAILED) in 6 secs.
[10:02:20] I/launcher - 0 instance(s) of WebDriver still running
[10:02:20] I/launcher - chrome #01 failed 1 test(s)
[10:02:20] I/launcher - overall: 1 failed spec(s)
[10:02:20] E/launcher - Process exited with error code 1
An unexpected error occurred: undefined
我想测试我的返回方法的实际值,而不像单元测试那样,他们不知道我的方法fetchData。
如果您需要更多信息,请告诉我😁。
非常感谢。
推荐答案
您尚未创建AnnonceChronoDetailService
的实例(仅创建了引用),这就是service
变量未定义的原因
let page: AppPage;
let service: AnnonceChronoDetailService;
this.chronoInfo = new ALChrono(); //it's a class
beforeEach(() => {
page = new AppPage();
service = new AnnonceChronoDetailService(); // create service instance
});
这篇关于E2e测试角度7:失败:无法读取未定义的属性';fetchData';的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文