angular - 在angular2中模拟或覆盖扩展类

标签 angular unit-testing typescript

大家好,我在 angular2 单元测试方面遇到了一些问题。有谁能够帮我?
我有这样的类(class)

export class PostcodeApiService extends ApiService {

  constructor(Http: Http, auth: AuthService) {
    super(Http, auth);
  }
  
  getPostcodes(filterObject) {
    return super.post('postcodes/filter', filterObject );
  }
}

export class ApiService {


  constructor(private http: Http) {
  }

  post(url, payload: any) {
    return new Observable((observer) => {
        this.http.post(`someUrl/${url}`, payload)
          .map((res: Response) => res.json())
          .catch((error: any) => {
            return Observable.throw(error || `Server error ${url}`);
          })
          .subscribe((data) => {
            observer.next(data);
          });
    });
  }


}

如何模拟 ApiService.post() 函数?

我的规范文件是这样的

describe('PostcodeApiService', () => {


  beforeEach(() => {
    TestBed.configureTestingModule({
      providers: [
        PostcodeApiService,
        Http,
        ConnectionBackend,
        AuthService,
        UserService
      ],
      imports: [
        HttpModule
      ]
    });
  });

  it('should ...', inject([PostcodeApiService], (service: PostcodeApiService) => {
    // How ovveride post method ?
  }));
  
  
  
});

如果你能帮我解决这个问题,我将不胜感激。 感谢关注!

最佳答案

创建模拟类:

    class PostcodeApiServiceMock extends PostcodeApiService {
      post(url, payload: any) {
        // do something
      }
    }

并提供

    { provide: PostcodeApiServce, useClass: PostcodeApiServiceMock }

你可以在这里找到一个很好的例子:

https://angular.io/guide/testing#test-a-routed-component

关于angular - 在angular2中模拟或覆盖扩展类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45374847/

相关文章:

jquery - 为什么我的 bootstrap 轮播不能正常工作?

javascript - Angular - 指令的输入在按下按钮时不更新

javascript - 日期格式的自定义页面

javascript - Laravel Elixir 使用 Typescript 而不是 Javascript

TypeScript 和 Koa 2 : async/await issue with Global Error Handler

android - Ionic2 - LiveReload 不工作

unit-testing - VS 2017未在.NET Core上发现测试

ios - 如何为异步方法编写 XCTestCase?

java - 拦截传出的 HTTP 请求

javascript - 为什么某些未指定扩展名的 webpack/Babel ES6 导入会解析为 "undefined?"