首页 > 解决方案 > DataService遇到声明异常FAILED-Angular Unit testing

问题描述

我正在为服务层进行单元测试。但我收到一个错误,例如 DataService 遇到声明异常 FAILED data.service.ts

 data: Data[];
  private url = "http://localhost:8080/getdata";

  constructor(
    private http: HttpClient,
     private processHTTPMsgService: ProcessHTTPMsgService
  ) {}

  getData(): Observable<Data[]> {
    return this.http
      .get<Data[]>(this.url)
      .pipe(map(data => (this.data = data)))
      .pipe(catchError(this.processHTTPMsgService.handleError));
  }

data.service.spec.ts

describe("DataService", () => {
  let service: DataService;
  let httpMock: HttpTestingController;
  beforeEach(
    () =>
      TestBed.configureTestingModule({
        imports: [HttpClientTestingModule, HttpClientModule],
        providers: [DataService,ProcessHTTPMsgService]
      }),
    (service = TestBed.get(DataService))(
      (httpMock = TestBed.get(HttpTestingController))
    )
  );
  afterEach(() => {
    httpMock.verify();
  });

  describe("should retrieve data from the API", () => {
    const dummyPosts: Data[] = [
      {
        effectivefrom: "string",
        effectiveto: "string",
        externalname: "string",
        id: 1,
        type: "string",
        name: "string",
        processstep: 1,
        status: "string"
      }
    ];
    service.getData().subscribe(data => {
      expect(data.length).toBe(1);
      expect(data).toEqual(dummyPosts);
    });
    const request = httpMock.expectOne('http://localhost:8080/getdata');
    expect(request.request.method).toBe("GET");
    request.flush(dummyPosts);
  });

  describe("should be created", () => {
    const service: DataService = TestBed.get(DataService);
    expect(service).toBeTruthy();
  });
});

我得到的错误是

DataService 遇到声明异常

错误:无法从同步测试中调用 Promise.then。

提前致谢!

标签: angularunit-testingjasminekarma-jasmineangular7

解决方案


推荐阅读