标签: ng-mocks

是否可以使用 ng-mocks 保留模拟服务中的一些方法?

我正在向一个有角度的项目添加测试。有一项服务从 API 获取一些数据,并根据这些数据创建一些业务实体。

我使用ng-mocks模拟了此服务来测试依赖于它的组件。

原来的服务是这样的:

class DataService {
  public getEntityFromApi(): Observable<Entity> {
    return http.get(...).pipe(
      map(httpResponse => {
        return this.createEntityFromApiData(httpResponse);
      })
    );
  }

  private createEntityFromApiData(apiData: any): Entity {
    // ...
  }
}
Run Code Online (Sandbox Code Playgroud)

它被嘲笑为:

getMockedServiceProvider() {
  const testData = ...;
  return MockProvider(DataService, {
    getEntityFromApi: () => {
      let entity = // duplicated code from the createEntityFromApiData method to create the object from testData
      return of(entity);
    }
  });
}
Run Code Online (Sandbox Code Playgroud)

因此,模拟服务能够返回一个对象,而无需向 API 发出请求,但我必须复制从纯 json 创建对象的代码。

避免模​​拟服务中出现重复的最佳方法是什么?

  1. 是否有可能以某种方式在被模拟的服务中保留createEntityFromApiData原始服务的私有性?
  2. 我是否应该将此逻辑隔离在另一个仅负责实例化的服务中,我将在测试中按原样使用该实例?
  3. 其他方法?

testing angular ng-mocks

5
推荐指数
1
解决办法
626
查看次数

如何将 ng-mocks 添加到新的 Angular 15 项目

我最近使用最新的 Angular 15 CLI 创建了一个新的 Angular 项目。现在我想向其中添加 ng-mocks。

我可以安装依赖项,但不再有test.ts可以添加 ng-mocks 配置的文件。当我自己添加文件时,不再找到我的测试。

将 ng-mocks 添加到 Angular 15 项目而不使用 的正确方法是什么test.ts

angular ng-mocks

2
推荐指数
1
解决办法
991
查看次数

标签 统计

angular ×2

ng-mocks ×2

testing ×1