4

我需要在不模拟后端的情况下测试 Angular 4 服务,但没有成功。

我的 beforeEach 如下:

import { ComponentFixture, TestBed, async } from '@angular/core/testing';

import { RouterStub } from './test-utils/router-stub';
import { MdSnackBarStub } from './test-utils/mdsnackbar-stub';
import { MdDialogStub } from './test-utils/mddialog-stub';

import { HttpModule, Http } from '@angular/http';
import { Router } from "@angular/router";

import { MdSnackBar, MdDialog } from "@angular/material";

import { AuthService } from './auth.service';

describe('AuthService', () => {

  let authService: AuthService;

  beforeEach(async(() => {

    TestBed.configureTestingModule({
      imports: [
        HttpModule,
        FormsModule
      ],
      providers: [
        AuthService,
        { provide: Router, useClass: RouterStub },
        { provide: MdSnackBar, useClass: MdSnackBarStub },
        { provide: MdDialog, useClass: MdDialogStub }
      ]
    }).compileComponents().then((done) => {

      this.authService = TestBed.get(AuthService);
      this.authService.login('myUsername', 'myPassword');

        });

      }));
});

..但由于某种原因,没有办法让Http真正调用API。我知道该服务正在运行,因为手动测试时可以。我相信 TestBed 提供了 Http 的模拟版本。

我想要这个,因为我需要真正记录 AuthService 才能进行我需要的测试。AuthService 保存用户的令牌信息和其他数据。

有人可以给我指示或指出一些工作示例来仅测试 Angular 4 服务吗?

谢谢。

4

0 回答 0