繁体   English   中英

如何在 Angular 单元测试中重用 Mock 依赖项?

[英]How to reuse Mock dependencies in Angular Unit Test?

我在 Angular 中编写单元测试,我是 mocking 重复所有规范中的所有服务,TestBed.configureTestingModule 在所有规范文件中具有相同的代码。 是否可以将此 TestBed.configureTestingModule 和 Mock 依赖项移动到某个公共文件中,并且可以在我们想要的任何地方注入/使用?

describe(()=>{
 @Injectable({ providedIn: 'root' })
 class MockFirstService {
 constructor() { };
 show() { };
 hide() { }; 
 }
@Injectable({ providedIn: 'root' })
class MockSecondWebApiService extends ApiBaseService {
constructor(http: HttpClient
  , blockUI: BlockUIService
) {
  super(http, blockUI, cache, { baseUrl: baseUrl });
}
}
  beforeEach(()=>{
 TestBed.configureTestingModule({
  imports: [RouterTestingModule, HttpClientTestingModule],
  providers: [
    Injector,
    ApplicationRef,
    CacheService,
    LocalStorageProvider,
    {
      provide: FirstService ,
      useClass: MockFirstService 
    },
    
    {
      provide: SecondWebApiService ,
      useClass: MockSecondWebApiService 
    },
  ],
  }),
}
}

是的你可以。 不要将@Injectable用于MockServices 只需创建一个stub文件夹并在该文件夹中创建所有 MockServices ( first.service.stub.ts )。确保export所有 Mock 服务。

export class MockFirstService {
   show() { };
   hide() { }; 
}

只需将其导入component.spec文件并与useClass一起使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM