Karma-Test: Random Test fails when using async in other tests

Solution 1:

your before each block is wrong, because you are attempting to create the component MyComponent before the compilation part finish, if you have a look into https://angular.io/api/core/testing/TestBed#compileComponents you can see that TestBed.compileComponents return a promise. so the boilerplate of you test should change sightly. First of all you need to make beforeEach aware that it's containing some async activities, there is more than one way of doing this including the native async/await, angular offer an utility async() out of the box. which is going to turn your test in beforeEach(async( () => {...})) then the second bit is that the creation of your mock should happen when the components are compiled. so all togheter your code is gonna look like

beforeEach(async(() => {
TestBed.configureTestingModule({
    declarations: [MyComponent, OnOffSwitchComponent, TranslatePipeMock],
    imports: [
        NgbModule.forRoot(),
        FormsModule,
        ReactiveFormsModule
    ],
    providers: [
        {provide: TranslateService, useValue: translateServiceMock()},
        {provide: UtilService, useValue: utilMock()},
        {provide: ZipService, useValue: zipService}
    ]
}).compileComponents().then(() => {
   fixture = TestBed.createComponent(MyComponent);
   component = fixture.componentInstance;
   fixture.detectChanges();
  });    
}));