How to use ngModule1 method in ng-mocks

Best JavaScript code snippet using ng-mocks

mock-builder.performance.spec.ts

Source:mock-builder.performance.spec.ts Github

copy

Full Screen

1import {2 Component,3 Directive,4 Injectable,5 InjectionToken,6 NgModule,7} from '@angular/core';8import { ngMocks } from '../mock-helper/mock-helper';9import { MockBuilder } from './mock-builder';10const TARGET1_TOKEN = new InjectionToken('TARGET1');11const TARGET2_TOKEN = new InjectionToken('TARGET2');12@Component({13 selector: 'target1',14 template: 'target1',15})16class Target1Component {}17@Directive({18 selector: '[target1]',19})20class Target1Directive {}21@Injectable()22class Target1Service {}23@NgModule({24 declarations: [Target1Component, Target1Directive],25 providers: [Target1Service],26})27export class Target1Module {}28@Component({29 selector: 'target2',30 template: 'target2',31})32class Target2Component {}33@Directive({34 selector: '[target2]',35})36class Target2Directive {}37@Injectable()38class Target2Service {}39@NgModule({40 declarations: [Target2Component, Target2Directive],41 providers: [Target2Service],42})43export class Target2Module {}44describe('MockBuilderPerformance', () => {45 afterEach(ngMocks.reset);46 it('accepts the same beforeCC', () => {47 const beforeCC = () => undefined;48 const ngModule1 = MockBuilder()49 .mock(Target1Module)50 .beforeCompileComponents(beforeCC)51 .build();52 const ngModule2 = MockBuilder()53 .mock(Target1Module)54 .beforeCompileComponents(beforeCC)55 .build();56 expect(ngModule1.imports?.[0]).toBe(ngModule2.imports?.[0]);57 });58 it('fails on a different size beforeCC', () => {59 const beforeCC = () => undefined;60 const ngModule1 = MockBuilder().mock(Target1Module).build();61 const ngModule2 = MockBuilder()62 .mock(Target1Module)63 .beforeCompileComponents(beforeCC)64 .build();65 expect(ngModule1.imports?.[0]).not.toBe(ngModule2.imports?.[0]);66 });67 it('fails on a missing beforeCC', () => {68 const beforeCC1 = () => undefined;69 const beforeCC2 = () => undefined;70 const ngModule1 = MockBuilder()71 .mock(Target1Module)72 .beforeCompileComponents(beforeCC1)73 .build();74 const ngModule2 = MockBuilder()75 .mock(Target1Module)76 .beforeCompileComponents(beforeCC2)77 .build();78 expect(ngModule1.imports?.[0]).not.toBe(ngModule2.imports?.[0]);79 });80 it('accepts the same keepDef', () => {81 const ngModule1 = MockBuilder().keep(Target1Module).build();82 const ngModule2 = MockBuilder().keep(Target1Module).build();83 expect(ngModule1.imports?.[0]).toBe(ngModule2.imports?.[0]);84 });85 it('fails on a different size keepDef', () => {86 const ngModule1 = MockBuilder().build();87 const ngModule2 = MockBuilder().keep(Target1Module).build();88 expect(ngModule1.imports?.[0]).not.toBe(ngModule2.imports?.[0]);89 });90 it('fails on a missing keepDef', () => {91 const ngModule1 = MockBuilder().keep(Target1Module).build();92 const ngModule2 = MockBuilder().keep(Target2Module).build();93 expect(ngModule1.imports?.[0]).not.toBe(ngModule2.imports?.[0]);94 });95 it('accepts the same replaceDef', () => {96 const ngModule1 = MockBuilder()97 .keep(Target1Module)98 .replace(Target1Component, Target2Component)99 .build();100 const ngModule2 = MockBuilder()101 .keep(Target1Module)102 .replace(Target1Component, Target2Component)103 .build();104 expect(ngModule1.imports?.[0]).toBe(ngModule2.imports?.[0]);105 });106 it('fails on a different size replaceDef', () => {107 const ngModule1 = MockBuilder().keep(Target1Module).build();108 const ngModule2 = MockBuilder()109 .keep(Target1Module)110 .replace(Target1Component, Target2Component)111 .build();112 expect(ngModule1.imports?.[0]).not.toBe(ngModule2.imports?.[0]);113 });114 it('fails on a missing replaceDef', () => {115 const ngModule1 = MockBuilder()116 .keep(Target1Module)117 .replace(Target1Component, Target2Component)118 .build();119 const ngModule2 = MockBuilder()120 .keep(Target1Module)121 .replace(Target1Directive, Target2Directive)122 .build();123 expect(ngModule1.imports?.[0]).not.toBe(ngModule2.imports?.[0]);124 });125 it('accepts the same excludeDef', () => {126 const ngModule1 = MockBuilder()127 .keep(Target1Module)128 .exclude(Target1Component)129 .build();130 const ngModule2 = MockBuilder()131 .keep(Target1Module)132 .exclude(Target1Component)133 .build();134 expect(ngModule1.imports?.[0]).toBe(ngModule2.imports?.[0]);135 });136 it('fails on a different size excludeDef', () => {137 const ngModule1 = MockBuilder().keep(Target1Module).build();138 const ngModule2 = MockBuilder()139 .keep(Target1Module)140 .exclude(Target1Component)141 .build();142 expect(ngModule1.imports?.[0]).not.toBe(ngModule2.imports?.[0]);143 });144 it('fails on a missing excludeDef', () => {145 const ngModule1 = MockBuilder()146 .keep(Target1Module)147 .exclude(Target1Component)148 .build();149 const ngModule2 = MockBuilder()150 .keep(Target1Module)151 .exclude(Target2Component)152 .build();153 expect(ngModule1.imports?.[0]).not.toBe(ngModule2.imports?.[0]);154 });155 it('accepts the same mockDef', () => {156 const ngModule1 = MockBuilder()157 .mock(Target1Module)158 .mock(Target1Component)159 .build();160 const ngModule2 = MockBuilder()161 .mock(Target1Module)162 .mock(Target1Component)163 .build();164 expect(ngModule1.imports?.[0]).toBe(ngModule2.imports?.[0]);165 });166 it('fails on a different size mockDef', () => {167 const ngModule1 = MockBuilder().build();168 const ngModule2 = MockBuilder().mock(Target1Module).build();169 expect(ngModule1.imports?.[0]).not.toBe(ngModule2.imports?.[0]);170 });171 it('fails on a missing mockDef', () => {172 const ngModule1 = MockBuilder().mock(Target1Module).build();173 const ngModule2 = MockBuilder().mock(Target2Module).build();174 expect(ngModule1.imports?.[0]).not.toBe(ngModule2.imports?.[0]);175 });176 it('accepts the same providerDef', () => {177 const ngModule1 = MockBuilder().provide(Target1Service).build();178 const ngModule2 = MockBuilder().provide(Target1Service).build();179 expect(ngModule1.providers?.[0]).toBe(ngModule2.providers?.[0]);180 });181 it('fails on a different size providerDef', () => {182 const ngModule1 = MockBuilder().build();183 const ngModule2 = MockBuilder().provide(Target1Service).build();184 expect(ngModule1.providers?.[0]).not.toBe(185 ngModule2.providers?.[0],186 );187 });188 it('fails on a missing providerDef', () => {189 const ngModule1 = MockBuilder().provide(Target1Service).build();190 const ngModule2 = MockBuilder().provide(Target2Service).build();191 expect(ngModule1.providers?.[0]).not.toBe(192 ngModule2.providers?.[0],193 );194 });195 it('accepts on the same providerDef useValue', () => {196 const ngModule1 = MockBuilder()197 .provide({ provide: Target1Service, useValue: 1 })198 .build();199 const ngModule2 = MockBuilder()200 .provide({ provide: Target1Service, useValue: 1 })201 .build();202 expect(ngModule1.providers?.[0]).toBe(ngModule2.providers?.[0]);203 });204 it('fails on a different providerDef useValue', () => {205 const ngModule1 = MockBuilder()206 .provide({ provide: Target1Service, useValue: 1 })207 .build();208 const ngModule2 = MockBuilder()209 .provide({ provide: Target1Service, useValue: 2 })210 .build();211 expect(ngModule1.providers?.[0]).not.toBe(212 ngModule2.providers?.[0],213 );214 });215 it('accepts the same providerDef useValue', () => {216 const ngModule1 = MockBuilder()217 .provide({ provide: Target1Service, useClass: Target2Service })218 .build();219 const ngModule2 = MockBuilder()220 .provide({ provide: Target1Service, useClass: Target2Service })221 .build();222 expect(ngModule1.providers?.[0]).toBe(ngModule2.providers?.[0]);223 });224 it('fails on a different providerDef useValue', () => {225 const ngModule1 = MockBuilder()226 .provide({ provide: Target1Service, useClass: Target1Service })227 .build();228 const ngModule2 = MockBuilder()229 .provide({ provide: Target1Service, useClass: Target2Service })230 .build();231 expect(ngModule1.providers?.[0]).not.toBe(232 ngModule2.providers?.[0],233 );234 });235 it('accepts the same providerDef helperUseFactory', () => {236 const factory = () => 1;237 const ngModule1 = MockBuilder()238 .provide({ provide: Target1Service, useFactory: factory })239 .build();240 const ngModule2 = MockBuilder()241 .provide({ provide: Target1Service, useFactory: factory })242 .build();243 expect(ngModule1.providers?.[0]).toBe(ngModule2.providers?.[0]);244 });245 it('fails on a different providerDef helperUseFactory', () => {246 const ngModule1 = MockBuilder()247 .provide({ provide: Target1Service, useFactory: () => 1 })248 .build();249 const ngModule2 = MockBuilder()250 .provide({ provide: Target1Service, useFactory: () => 2 })251 .build();252 expect(ngModule1.providers?.[0]).not.toBe(253 ngModule2.providers?.[0],254 );255 });256 it('accepts the same providerDef useExisting', () => {257 const ngModule1 = MockBuilder()258 .provide({259 provide: Target1Service,260 useExisting: Target2Service,261 })262 .build();263 const ngModule2 = MockBuilder()264 .provide({265 provide: Target1Service,266 useExisting: Target2Service,267 })268 .build();269 expect(ngModule1.providers?.[0]).toBe(ngModule2.providers?.[0]);270 });271 it('fails on a different providerDef useExisting', () => {272 const ngModule1 = MockBuilder()273 .provide({274 provide: Target1Service,275 useExisting: Target1Service,276 })277 .build();278 const ngModule2 = MockBuilder()279 .provide({280 provide: Target1Service,281 useExisting: Target2Service,282 })283 .build();284 expect(ngModule1.providers?.[0]).not.toBe(285 ngModule2.providers?.[0],286 );287 });288 it('accepts the same providerDef', () => {289 const def = { provide: Target1Service };290 const ngModule1 = MockBuilder().provide(def).build();291 const ngModule2 = MockBuilder().provide(def).build();292 expect(ngModule1.providers?.[0]).toBe(ngModule2.providers?.[0]);293 });294 it('fails on a different providerDef', () => {295 const ngModule1 = MockBuilder()296 .provide({ provide: Target1Service })297 .build();298 const ngModule2 = MockBuilder()299 .provide({ provide: Target1Service })300 .build();301 expect(ngModule1.providers?.[0]).not.toBe(302 ngModule2.providers?.[0],303 );304 });305 it('fails on a different multi flags', () => {306 const ngModule1 = MockBuilder()307 .provide({ provide: Target1Service, useValue: 1 })308 .build();309 const ngModule2 = MockBuilder()310 .provide({ provide: Target1Service, useValue: 1, multi: true })311 .build();312 expect(ngModule1.providers?.[0]).not.toBe(313 ngModule2.providers?.[0],314 );315 });316 it('accepts the same multi flags', () => {317 const ngModule1 = MockBuilder()318 .provide({ provide: Target1Service, useValue: 1, multi: true })319 .build();320 const ngModule2 = MockBuilder()321 .provide({ provide: Target1Service, useValue: 1, multi: true })322 .build();323 expect(ngModule1.providers?.[0]).toBe(ngModule2.providers?.[0]);324 });325 it('fails on a different multi size', () => {326 const ngModule1 = MockBuilder()327 .provide({ provide: Target1Service, useValue: 1, multi: true })328 .build();329 const ngModule2 = MockBuilder()330 .provide({ provide: Target1Service, useValue: 1, multi: true })331 .provide({ provide: Target1Service, useValue: 2, multi: true })332 .build();333 expect(ngModule1.providers?.[0]).not.toBe(334 ngModule2.providers?.[0],335 );336 });337 it('fails on a different multi values', () => {338 const ngModule1 = MockBuilder()339 .provide({ provide: Target1Service, useValue: 1, multi: true })340 .build();341 const ngModule2 = MockBuilder()342 .provide({ provide: Target1Service, useValue: 2, multi: true })343 .build();344 expect(ngModule1.providers?.[0]).not.toBe(345 ngModule2.providers?.[0],346 );347 });348 it('accepts the same defProviders', () => {349 const ngModule1 = MockBuilder()350 .keep({351 ngModule: Target1Module,352 providers: [353 {354 provides: TARGET1_TOKEN,355 useValue: 1,356 },357 ],358 })359 .build();360 const ngModule2 = MockBuilder()361 .keep({362 ngModule: Target1Module,363 providers: [364 {365 provides: TARGET1_TOKEN,366 useValue: 1,367 },368 ],369 })370 .build();371 expect(ngModule1.imports?.[0]).toBe(ngModule2.imports?.[0]);372 });373 it('fails on a different size defProviders', () => {374 const ngModule1 = MockBuilder().keep(Target1Module).build();375 const ngModule2 = MockBuilder()376 .keep({377 ngModule: Target1Module,378 providers: [379 {380 provides: TARGET1_TOKEN,381 useValue: 1,382 },383 ],384 })385 .build();386 expect(ngModule1.imports?.[0]).not.toBe(ngModule2.imports?.[0]);387 });388 it('fails on a missing defProviders', () => {389 const ngModule1 = MockBuilder()390 .keep(Target2Module)391 .keep({392 ngModule: Target1Module,393 providers: [394 {395 provides: TARGET2_TOKEN,396 useValue: 1,397 },398 ],399 })400 .build();401 const ngModule2 = MockBuilder()402 .keep(Target1Module)403 .keep({404 ngModule: Target2Module,405 providers: [406 {407 provides: TARGET2_TOKEN,408 useValue: 1,409 },410 ],411 })412 .build();413 expect(ngModule1.imports?.[0]).not.toBe(ngModule2.imports?.[0]);414 });415 it('fails on a different defProviders', () => {416 const ngModule1 = MockBuilder()417 .keep({418 ngModule: Target1Module,419 providers: [420 {421 provides: TARGET1_TOKEN,422 useValue: 1,423 },424 ],425 })426 .build();427 const ngModule2 = MockBuilder()428 .keep({429 ngModule: Target1Module,430 providers: [431 {432 provides: TARGET1_TOKEN,433 useValue: 2,434 },435 ],436 })437 .build();438 expect(ngModule1.imports?.[0]).not.toBe(ngModule2.imports?.[0]);439 });440 it('fails on the same defProviders but different multi', () => {441 const ngModule1 = MockBuilder()442 .keep({443 ngModule: Target1Module,444 providers: [445 {446 multi: true,447 provides: TARGET1_TOKEN,448 useValue: 1,449 },450 ],451 })452 .build();453 const ngModule2 = MockBuilder()454 .keep({455 ngModule: Target1Module,456 providers: [457 {458 provides: TARGET1_TOKEN,459 useValue: 1,460 },461 ],462 })463 .build();464 expect(ngModule1.imports?.[0]).not.toBe(ngModule2.imports?.[0]);465 });466 it('accepts the same defValue', () => {467 const ngModule1 = MockBuilder()468 .mock(Target1Module)469 .mock(Target1Service, 1)470 .build();471 const ngModule2 = MockBuilder()472 .mock(Target1Module)473 .mock(Target1Service, 1)474 .build();475 expect(ngModule1.providers?.[0]).toBe(ngModule2.providers?.[0]);476 });477 it('fails on a different size defValue', () => {478 const ngModule1 = MockBuilder()479 .mock(Target1Module)480 .mock(Target1Service)481 .build();482 const ngModule2 = MockBuilder()483 .mock(Target1Module)484 .mock(Target1Service, 1)485 .build();486 expect(ngModule1.providers?.[0]).not.toBe(487 ngModule2.providers?.[0],488 );489 });490 it('fails on a missing defValue', () => {491 const ngModule1 = MockBuilder()492 .mock(Target1Module)493 .mock(Target1Service)494 .mock(Target2Service, 2)495 .build();496 const ngModule2 = MockBuilder()497 .mock(Target1Module)498 .mock(Target2Service)499 .mock(Target1Service, 1)500 .build();501 expect(ngModule1.providers?.[0]).not.toBe(502 ngModule2.providers?.[0],503 );504 });505 it('fails on a different defValue', () => {506 const ngModule1 = MockBuilder()507 .mock(Target1Module)508 .mock(Target1Service, 1)509 .build();510 const ngModule2 = MockBuilder()511 .mock(Target1Module)512 .mock(Target1Service, 2)513 .build();514 expect(ngModule1.providers?.[0]).not.toBe(515 ngModule2.providers?.[0],516 );517 });518 it('accepts the same size configDef', () => {519 const ngModule1 = MockBuilder().keep(Target1Module, {}).build();520 const ngModule2 = MockBuilder().keep(Target1Module, {}).build();521 expect(ngModule1.providers?.[0]).toBe(ngModule2.providers?.[0]);522 });523 it('fails on a different size configDef', () => {524 const ngModule1 = MockBuilder().keep(Target1Module).build();525 const ngModule2 = MockBuilder()526 .keep(Target1Module, { dependency: true })527 .build();528 expect(ngModule1.providers?.[0]).not.toBe(529 ngModule2.providers?.[0],530 );531 });532 it('fails on a missing configDef', () => {533 const ngModule1 = MockBuilder()534 .keep(Target1Module)535 .keep(Target2Module, { dependency: true })536 .build();537 const ngModule2 = MockBuilder()538 .keep(Target2Module)539 .keep(Target1Module, { dependency: true })540 .build();541 expect(ngModule1.providers?.[0]).not.toBe(542 ngModule2.providers?.[0],543 );544 });545 it('accepts the same configDef', () => {546 const config = {};547 const ngModule1 = MockBuilder()548 .keep(Target1Module, config)549 .build();550 const ngModule2 = MockBuilder()551 .keep(Target1Module, config)552 .build();553 expect(ngModule1.providers?.[0]).toBe(ngModule2.providers?.[0]);554 });555 it('fails on different dependency configDef', () => {556 const ngModule1 = MockBuilder()557 .keep(Target1Module, { dependency: true })558 .build();559 const ngModule2 = MockBuilder()560 .keep(Target1Module, { dependency: false })561 .build();562 expect(ngModule1.providers?.[0]).not.toBe(563 ngModule2.providers?.[0],564 );565 });566 it('fails on different export configDef', () => {567 const ngModule1 = MockBuilder()568 .keep(Target1Module, { export: true })569 .build();570 const ngModule2 = MockBuilder()571 .keep(Target1Module, { export: false })572 .build();573 expect(ngModule1.providers?.[0]).not.toBe(574 ngModule2.providers?.[0],575 );576 });577 it('fails on different exportAll configDef', () => {578 const ngModule1 = MockBuilder()579 .keep(Target1Module, { exportAll: true })580 .build();581 const ngModule2 = MockBuilder()582 .keep(Target1Module, { exportAll: false })583 .build();584 expect(ngModule1.providers?.[0]).not.toBe(585 ngModule2.providers?.[0],586 );587 });588 it('accepts the same render configDef', () => {589 const render = {};590 const ngModule1 = MockBuilder()591 .mock(Target1Module, { render })592 .build();593 const ngModule2 = MockBuilder()594 .mock(Target1Module, { render })595 .build();596 expect(ngModule1.providers?.[0]).toBe(ngModule2.providers?.[0]);597 });598 it('fails on different render flag configDef', () => {599 const ngModule1 = MockBuilder()600 .mock(Target1Module, { render: true })601 .build();602 const ngModule2 = MockBuilder()603 .mock(Target1Module, { render: false })604 .build();605 expect(ngModule1.providers?.[0]).not.toBe(606 ngModule2.providers?.[0],607 );608 });609 it('fails on different render length configDef', () => {610 const ngModule1 = MockBuilder()611 .mock(Target1Module, { render: {} })612 .build();613 const ngModule2 = MockBuilder()614 .mock(Target1Module, {615 render: {616 variables: {},617 },618 })619 .build();620 expect(ngModule1.providers?.[0]).not.toBe(621 ngModule2.providers?.[0],622 );623 });624 it('fails on different render.$implicit configDef', () => {625 const ngModule1 = MockBuilder()626 .mock(Target1Module, {627 render: {628 $implicit: true,629 },630 })631 .build();632 const ngModule2 = MockBuilder()633 .mock(Target1Module, {634 render: {635 $implicit: false,636 },637 })638 .build();639 expect(ngModule1.providers?.[0]).not.toBe(640 ngModule2.providers?.[0],641 );642 });643 it('accepts the same render.variables configDef', () => {644 const variables = {};645 const ngModule1 = MockBuilder()646 .mock(Target1Module, {647 render: {648 variables,649 },650 })651 .build();652 const ngModule2 = MockBuilder()653 .mock(Target1Module, {654 render: {655 variables,656 },657 })658 .build();659 expect(ngModule1.providers?.[0]).toBe(ngModule2.providers?.[0]);660 });661 it('accepts equal render.variables configDef', () => {662 const ngModule1 = MockBuilder()663 .mock(Target1Module, {664 render: {665 variables: {666 flag: 1,667 },668 },669 })670 .build();671 const ngModule2 = MockBuilder()672 .mock(Target1Module, {673 render: {674 variables: {675 flag: 1,676 },677 },678 })679 .build();680 expect(ngModule1.providers?.[0]).toBe(ngModule2.providers?.[0]);681 });682 it('fails on missing definition configDef', () => {683 const ngModule1 = MockBuilder()684 .mock(Target1Module, { render: {} })685 .build();686 const ngModule2 = MockBuilder()687 .mock(Target1Module, {688 render: {689 variables: {690 flag: 2,691 },692 },693 })694 .build();695 const ngModule3 = MockBuilder()696 .mock(Target1Module, { render: {} })697 .build();698 expect(ngModule1.providers?.[0]).not.toBe(699 ngModule2.providers?.[0],700 );701 expect(ngModule2.providers?.[0]).not.toBe(702 ngModule3.providers?.[0],703 );704 });705 it('fails on different render.variables configDef', () => {706 const ngModule1 = MockBuilder()707 .mock(Target1Module, {708 render: {709 variables: {710 flag: 1,711 },712 },713 })714 .build();715 const ngModule2 = MockBuilder()716 .mock(Target1Module, {717 render: {718 variables: {719 flag: 1,720 key: false,721 },722 },723 })724 .build();725 expect(ngModule1.providers?.[0]).not.toBe(726 ngModule2.providers?.[0],727 );728 });729 it('fails on different values in render.variables configDef', () => {730 const ngModule1 = MockBuilder()731 .mock(Target1Module, {732 render: {733 variables: {734 flag: 1,735 },736 },737 })738 .build();739 const ngModule2 = MockBuilder()740 .mock(Target1Module, {741 render: {742 variables: {743 flag: 2,744 },745 },746 })747 .build();748 expect(ngModule1.providers?.[0]).not.toBe(749 ngModule2.providers?.[0],750 );751 });752 it('fails on different amount of blocks in render configDef', () => {753 const ngModule1 = MockBuilder()754 .mock(Target1Module, {755 render: {756 block1: {},757 },758 })759 .build();760 const ngModule2 = MockBuilder()761 .mock(Target1Module, {762 render: {763 block1: {},764 block2: {},765 },766 })767 .build();768 expect(ngModule1.providers?.[0]).not.toBe(769 ngModule2.providers?.[0],770 );771 });772 it('fails on different block definitions in render configDef', () => {773 const ngModule1 = MockBuilder()774 .mock(Target1Module, {775 render: {776 block1: {777 $implicit: true,778 },779 },780 })781 .build();782 const ngModule2 = MockBuilder()783 .mock(Target1Module, {784 render: {785 block1: {786 $implicit: false,787 },788 },789 })790 .build();791 expect(ngModule1.providers?.[0]).not.toBe(792 ngModule2.providers?.[0],793 );794 });...

Full Screen

Full Screen

processNgModuleDocs.spec.js

Source:processNgModuleDocs.spec.js Github

copy

Full Screen

1const testPackage = require('../../helpers/test-package');2const Dgeni = require('dgeni');3describe('processNgModuleDocs processor', () => {4 let processor;5 let injector;6 beforeEach(() => {7 const dgeni = new Dgeni([testPackage('angular-api-package')]);8 injector = dgeni.configureInjector();9 processor = injector.get('processNgModuleDocs');10 });11 it('should be available on the injector', () => {12 expect(processor.$process).toBeDefined();13 });14 it('should run before the correct processor', () => {15 expect(processor.$runBefore).toEqual(['createSitemap']);16 });17 it('should run after the correct processor', () => {18 expect(processor.$runAfter).toEqual(['extractDecoratedClassesProcessor', 'computeIdsProcessor']);19 });20 it('should convert non-array NgModule options to arrays', () => {21 const docs = [{22 docType: 'ngmodule',23 ngmoduleOptions: {24 a: ['AAA'],25 b: 'BBB',26 c: 4227 }28 }];29 processor.$process(docs);30 expect(docs[0].ngmoduleOptions.a).toEqual(['AAA']);31 expect(docs[0].ngmoduleOptions.b).toEqual(['BBB']);32 expect(docs[0].ngmoduleOptions.c).toEqual([42]);33 });34 it('should link directive/pipe docs with their NgModule docs (sorted by id)', () => {35 const aliasMap = injector.get('aliasMap');36 const directiveOptions = { selector: 'some-selector' };37 const ngModule1 = { docType: 'ngmodule', id: 'NgModule1', aliases: ['NgModule1'], ngmoduleOptions: {} };38 const ngModule2 = { docType: 'ngmodule', id: 'NgModule2', aliases: ['NgModule2'], ngmoduleOptions: {} };39 const directive1 = { docType: 'directive', id: 'Directive1', ngModules: ['NgModule1'], directiveOptions };40 const directive2 = { docType: 'directive', id: 'Directive2', ngModules: ['NgModule2'], directiveOptions };41 const directive3 = { docType: 'directive', id: 'Directive3', ngModules: ['NgModule1', 'NgModule2'], directiveOptions };42 const pipe1 = { docType: 'pipe', id: 'Pipe1', ngModules: ['NgModule1'] };43 const pipe2 = { docType: 'pipe', id: 'Pipe2', ngModules: ['NgModule2'] };44 const pipe3 = { docType: 'pipe', id: 'Pipe3', ngModules: ['NgModule1', 'NgModule2'] };45 aliasMap.addDoc(ngModule1);46 aliasMap.addDoc(ngModule2);47 processor.$process([ngModule1, pipe2, directive2, directive3, pipe1, ngModule2, directive1, pipe3]);48 expect(ngModule1.directives).toEqual([directive1, directive3]);49 expect(ngModule1.pipes).toEqual([pipe1, pipe3]);50 expect(ngModule2.directives).toEqual([directive2, directive3]);51 expect(ngModule2.pipes).toEqual([pipe2, pipe3]);52 expect(directive1.ngModules).toEqual([ngModule1]);53 expect(directive2.ngModules).toEqual([ngModule2]);54 expect(directive3.ngModules).toEqual([ngModule1, ngModule2]);55 expect(pipe1.ngModules).toEqual([ngModule1]);56 expect(pipe2.ngModules).toEqual([ngModule2]);57 expect(pipe3.ngModules).toEqual([ngModule1, ngModule2]);58 });59 it('should link classes that have a `providedIn` property on an @Injectable decorator that references a known NgModule doc', () => {60 const ngModule1 = { docType: 'ngmodule', id: 'NgModule1', aliases: ['NgModule1'], ngmoduleOptions: {} };61 const ngModule2 = { docType: 'ngmodule', id: 'NgModule2', aliases: ['NgModule2'], ngmoduleOptions: {} };62 const injectable1 = { docType: 'class', name: 'Injectable1', decorators: [{ name: 'Injectable', argumentInfo: [{ providedIn: '\'root\'' }] }] };63 const injectable2 = { docType: 'class', name: 'Injectable2', decorators: [{ name: 'Injectable', argumentInfo: [{ providedIn: '\'platform\'' }] }] };64 const injectable3 = { docType: 'class', name: 'Injectable3', decorators: [{ name: 'Injectable', argumentInfo: [{ providedIn: '"root"' }] }] };65 const injectable4 = { docType: 'class', name: 'Injectable4', decorators: [{ name: 'Injectable', argumentInfo: [{ providedIn: '"platform"' }] }] };66 const injectable5 = { docType: 'class', name: 'Injectable5', decorators: [{ name: 'Injectable', argumentInfo: [{ providedIn: 'NgModule1' }] }] };67 const injectable6 = { docType: 'class', name: 'Injectable6', decorators: [{ name: 'Injectable', argumentInfo: [{ providedIn: 'NgModule2' }] }] };68 const injectable7 = { docType: 'class', name: 'Injectable7' };69 const nonInjectable = { docType: 'class', name: 'nonInjectable' };70 const aliasMap = injector.get('aliasMap');71 aliasMap.addDoc(ngModule1);72 aliasMap.addDoc(ngModule2);73 processor.$process([ngModule1, ngModule2, injectable1, injectable2, injectable3, injectable4, injectable5, injectable6, injectable7, nonInjectable]);74 expect(ngModule1.providers).toEqual(['{ provide: Injectable5, useClass: Injectable5 }']);75 expect(ngModule2.providers).toEqual(['{ provide: Injectable6, useClass: Injectable6 }']);76 expect(injectable1.ngModules).toEqual(['root']);77 expect(injectable2.ngModules).toEqual(['platform']);78 expect(injectable3.ngModules).toEqual(['root']);79 expect(injectable4.ngModules).toEqual(['platform']);80 expect(injectable5.ngModules).toEqual([ngModule1]);81 expect(injectable6.ngModules).toEqual([ngModule2]);82 expect(injectable7.ngModules).toBeUndefined();83 expect(nonInjectable.ngModules).toBeUndefined();84 });85 it('should link classes that have a `providedIn` property on a ɵprov static that references a known NgModule doc', () => {86 const ngModule1 = { docType: 'ngmodule', id: 'NgModule1', aliases: ['NgModule1'], ngmoduleOptions: {} };87 const ngModule2 = { docType: 'ngmodule', id: 'NgModule2', aliases: ['NgModule2'], ngmoduleOptions: {} };88 const injectable1 = { docType: 'class', name: 'Injectable1', symbol: createSymbolWithProvider('\'root\'') };89 const injectable2 = { docType: 'class', name: 'Injectable2', symbol: createSymbolWithProvider('\'platform\'') };90 const injectable3 = { docType: 'class', name: 'Injectable3', symbol: createSymbolWithProvider('"root"') };91 const injectable4 = { docType: 'class', name: 'Injectable4', symbol: createSymbolWithProvider('"platform"') };92 const injectable5 = { docType: 'class', name: 'Injectable5', symbol: createSymbolWithProvider('NgModule1') };93 const injectable6 = { docType: 'class', name: 'Injectable6', symbol: createSymbolWithProvider('NgModule2') };94 const injectable7 = { docType: 'class', name: 'Injectable7' };95 const nonInjectable = { docType: 'class', name: 'nonInjectable' };96 const aliasMap = injector.get('aliasMap');97 aliasMap.addDoc(ngModule1);98 aliasMap.addDoc(ngModule2);99 processor.$process([ngModule1, ngModule2, injectable1, injectable2, injectable3, injectable4, injectable5, injectable6, injectable7, nonInjectable]);100 expect(ngModule1.providers).toEqual(['{ provide: Injectable5, useClass: Injectable5 }']);101 expect(ngModule2.providers).toEqual(['{ provide: Injectable6, useClass: Injectable6 }']);102 expect(injectable1.ngModules).toEqual(['root']);103 expect(injectable2.ngModules).toEqual(['platform']);104 expect(injectable3.ngModules).toEqual(['root']);105 expect(injectable4.ngModules).toEqual(['platform']);106 expect(injectable5.ngModules).toEqual([ngModule1]);107 expect(injectable6.ngModules).toEqual([ngModule2]);108 expect(injectable7.ngModules).toBeUndefined();109 expect(nonInjectable.ngModules).toBeUndefined();110 });111 it('should link injectables that are marked with `@ngModule` JSDOC tags', () => {112 const ngModule1 = { docType: 'ngmodule', id: 'NgModule1', aliases: ['NgModule1'], ngmoduleOptions: {} };113 const ngModule2 = { docType: 'ngmodule', id: 'NgModule2', aliases: ['NgModule2'], ngmoduleOptions: { providers: ['PROVIDER'] } };114 const injectable1 = { docType: 'class', name: 'Injectable1', ngModules: ['NgModule1'] };115 const injectable2 = { docType: 'class', name: 'Injectable2', ngModules: ['NgModule2'] };116 const injectable3 = { docType: 'class', name: 'Injectable3' };117 const nonInjectable = { docType: 'class', name: 'nonInjectable' };118 const aliasMap = injector.get('aliasMap');119 aliasMap.addDoc(ngModule1);120 aliasMap.addDoc(ngModule2);121 processor.$process([ngModule1, ngModule2, injectable1, injectable2, injectable3, nonInjectable]);122 // Should not update the NgModule docs in this case.123 expect(ngModule1.providers).toBeUndefined();124 expect(ngModule2.providers).toEqual(['PROVIDER']);125 expect(injectable1.ngModules).toEqual([ngModule1]);126 expect(injectable2.ngModules).toEqual([ngModule2]);127 expect(injectable3.ngModules).toBeUndefined();128 expect(nonInjectable.ngModules).toBeUndefined();129 });130 it('should link injectables that are parsed out of `@NgModule` decorators', () => {131 const ngModule1 = { docType: 'ngmodule', id: 'NgModule1', ngmoduleOptions: { providers: ['Injectable1', '{ provide: Injectable2, useClass: Injectable2 }'] } };132 const ngModule2 = { docType: 'ngmodule', id: 'NgModule2', ngmoduleOptions: { providers: ['{ provide: Injectable3, useValue: {} }'] } };133 const injectable1 = { docType: 'class', name: 'Injectable1', aliases: ['Injectable1'] };134 const injectable2 = { docType: 'class', name: 'Injectable2', aliases: ['Injectable2'] };135 const injectable3 = { docType: 'class', name: 'Injectable3', aliases: ['Injectable3'] };136 const aliasMap = injector.get('aliasMap');137 aliasMap.addDoc(injectable1);138 aliasMap.addDoc(injectable2);139 aliasMap.addDoc(injectable3);140 processor.$process([ngModule1, ngModule2, injectable1, injectable2, injectable3]);141 expect(injectable1.ngModules).toEqual([ngModule1]);142 expect(injectable2.ngModules).toEqual([ngModule1]);143 expect(injectable3.ngModules).toEqual([ngModule2]);144 });145 it('should error if an injectable that has a `providedIn` property that references an unknown NgModule doc', () => {146 const log = injector.get('log');147 const injectable = { docType: 'class', name: 'Injectable1', decorators: [{ name: 'Injectable', argumentInfo: [{ providedIn: 'NgModuleRef' }] }] };148 expect(() => {149 processor.$process([injectable]);150 }).toThrowError('Failed to process NgModule relationships.');151 expect(log.error).toHaveBeenCalledWith(152 'The referenced "NgModuleRef" does not match a public NgModule - doc "Injectable1" (class) ');153 });154 it('should error if an injectable that has a `providedIn` property that references an ambiguous NgModule doc', () => {155 const log = injector.get('log');156 const ngModule1 = { docType: 'ngmodule', id: 'NgModule1', aliases: ['NgModuleRef'], ngmoduleOptions: {} };157 const ngModule2 = { docType: 'ngmodule', id: 'NgModule2', aliases: ['NgModuleRef'], ngmoduleOptions: {} };158 const injectable = { docType: 'class', name: 'Injectable1', decorators: [{ name: 'Injectable', argumentInfo: [{ providedIn: 'NgModuleRef' }] }] };159 const aliasMap = injector.get('aliasMap');160 aliasMap.addDoc(ngModule1);161 aliasMap.addDoc(ngModule2);162 expect(() => {163 processor.$process([injectable]);164 }).toThrowError('Failed to process NgModule relationships.');165 expect(log.error).toHaveBeenCalledWith(166 'The referenced "NgModuleRef" is ambiguous. Matches: NgModule1, NgModule2 - doc "Injectable1" (class) ');167 });168 it('should not error if an abstract directive does not have a `@ngModule` tag', () => {169 expect(() => {170 processor.$process([{ docType: 'directive', id: 'AbstractDir', directiveOptions: {} }]);171 }).not.toThrow();172 expect(() => {173 processor.$process([{174 docType: 'directive', id: 'AbstractDir',175 directiveOptions: { selector: undefined }176 }]);177 }).not.toThrow();178 });179 it('should error if a pipe/directive does not have a `@ngModule` tag', () => {180 const log = injector.get('log');181 expect(() => {182 processor.$process([{183 docType: 'directive', id: 'Directive1',184 directiveOptions: { selector: 'dir1' }185 }]);186 }).toThrowError('Failed to process NgModule relationships.');187 expect(log.error).toHaveBeenCalledWith(188 '"Directive1" has no @ngModule tag. Docs of type "directive" must have this tag. - doc "Directive1" (directive) ');189 expect(() => {190 processor.$process([{ docType: 'pipe', id: 'Pipe1' }]);191 }).toThrowError('Failed to process NgModule relationships.');192 expect(log.error).toHaveBeenCalledWith(193 '"Pipe1" has no @ngModule tag. Docs of type "pipe" must have this tag. - doc "Pipe1" (pipe) ');194 });195 it('should error if a pipe/directive has an @ngModule tag that does not match an NgModule doc', () => {196 const log = injector.get('log');197 expect(() => {198 processor.$process([{199 docType: 'directive', id: 'Directive1', ngModules: ['MissingNgModule'],200 directiveOptions: { selector: 'dir1' }201 }]);202 }).toThrowError('Failed to process NgModule relationships.');203 expect(log.error).toHaveBeenCalledWith(204 'The referenced "MissingNgModule" does not match a public NgModule - doc "Directive1" (directive) ');205 expect(() => {206 processor.$process([{ docType: 'pipe', id: 'Pipe1', ngModules: ['MissingNgModule'] }]);207 }).toThrowError('Failed to process NgModule relationships.');208 expect(log.error).toHaveBeenCalledWith(209 'The referenced "MissingNgModule" does not match a public NgModule - doc "Pipe1" (pipe) ');210 });211 it('should error if a pipe/directive has an @ngModule tag that matches more than one NgModule doc', () => {212 const aliasMap = injector.get('aliasMap');213 const log = injector.get('log');214 const ngModule1 = { docType: 'ngmodule', id: 'NgModule1', aliases: ['NgModuleAlias'], ngmoduleOptions: {} };215 const ngModule2 = { docType: 'ngmodule', id: 'NgModule2', aliases: ['NgModuleAlias'], ngmoduleOptions: {} };216 aliasMap.addDoc(ngModule1);217 aliasMap.addDoc(ngModule2);218 expect(() => {219 processor.$process([{220 docType: 'directive', id: 'Directive1', ngModules: ['NgModuleAlias'],221 directiveOptions: { selector: 'dir1' }222 }]);223 }).toThrowError('Failed to process NgModule relationships.');224 expect(log.error).toHaveBeenCalledWith(225 'The referenced "NgModuleAlias" is ambiguous. Matches: NgModule1, NgModule2 - doc "Directive1" (directive) ');226 expect(() => {227 processor.$process([{ docType: 'pipe', id: 'Pipe1', ngModules: ['NgModuleAlias'] }]);228 }).toThrowError('Failed to process NgModule relationships.');229 expect(log.error).toHaveBeenCalledWith(230 'The referenced "NgModuleAlias" is ambiguous. Matches: NgModule1, NgModule2 - doc "Pipe1" (pipe) ');231 });232});233/**234 * This function simulates a TypeScript AST node for the code:235 *236 * ```237 * static ɵprov = ɵɵdefineInjectable({238 * providedIn: 'xxxx',239 * });240 * ```241 */242function createSymbolWithProvider(providedIn) {243 const initializer = {244 pos: 0,245 end: providedIn.length,246 getSourceFile() {247 return { text: providedIn };248 }249 };250 const valueDeclaration = { initializer: { arguments: [{ properties: [{ name: { text: 'providedIn' }, initializer }] }] } };251 const exportMap = new Map();252 exportMap.set('ɵprov', { valueDeclaration });253 return { exports: exportMap };...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1var ngModule1 = require('ng-mocks').ngModule1;2var ngModule2 = require('ng-mocks').ngModule2;3var ngModule3 = require('ng-mocks').ngModule3;4var ngModule4 = require('ng-mocks').ngModule4;5var ngModule5 = require('ng-mocks').ngModule5;6var ngModule6 = require('ng-mocks').ngModule6;7var ngModule7 = require('ng-mocks').ngModule7;8var ngModule8 = require('ng-mocks').ngModule8;9var ngModule9 = require('ng-mocks').ngModule9;10var ngModule10 = require('ng-mocks').ngModule10;11var ngModule11 = require('ng-mocks').ngModule11;12var ngModule12 = require('ng-mocks').ngModule12;13var ngModule13 = require('ng-mocks').ngModule13;14var ngModule14 = require('ng-mocks').ngModule14;15var ngModule15 = require('ng-mocks').ngModule15;16var ngModule16 = require('ng-mocks').ngModule16;17var ngModule17 = require('ng-mocks').ngModule17;18var ngModule18 = require('ng-mocks').ngModule18;19var ngModule19 = require('ng-mocks').ngModule19;20var ngModule20 = require('ng-mocks').ngModule20;21var ngModule21 = require('ng-mocks').ngModule21;22var ngModule22 = require('ng-mocks').ngModule22;23var ngModule23 = require('ng-mocks').ngModule23;24var ngModule24 = require('ng-mocks').ngModule24;25var ngModule25 = require('ng-mocks').ngModule25;26var ngModule26 = require('ng-mocks').ngModule26;27var ngModule27 = require('ng-mocks').ngModule27;28var ngModule28 = require('ng-mocks').ngModule28;29var ngModule29 = require('ng-mocks').ngModule29;30var ngModule30 = require('ng-mocks').ngModule30;31var ngModule31 = require('ng-mocks').ngModule31;32var ngModule32 = require('ng-mocks').ngModule32;33var ngModule33 = require('ng-mocks').ngModule33;

Full Screen

Using AI Code Generation

copy

Full Screen

1var ngModule3 = require('ng-mocks').ngModule3;2var ngModule4 = require('ng-mocks').ngModule4;3var ngModule5 = require('ng-mocks').ngModule5;4var ngModule6 = require('ng-mocks').ngModule6;5var ngModule7 = require('ng-mocks').ngModule7;6var ngModule8 = require('ng-mocks').ngModule8;7var ngModule9 = require('ng-mocks').ngModule9;8var ngModule10 = require('ng-mocks').ngModule10;9var ngModule11 = require('ng-mocks').ngModule11;10var ngModule12 = require('ng-mocks').ngModule12;11var ngModule13 = require('ng-mocks').ngModule13;12var ngModule14 = require('ng-mocks').ngModule14;13var ngModule15 = require('ng-mocks').ngModule15;14var ngModule16 = require('ng-mocks').ngModule16;15var ngModule17 = require('ng-mocks').ngModule17;16var ngModule18 = require('ng-mocks').ngModule18;

Full Screen

Using AI Code Generation

copy

Full Screen

1import ngModule1 from 'ng-mocks';2import ngModule2 from 'ng-mocks/lib/mock-module';3import { ngModule3 } from 'ng-mocks';4import { ngModule4 } from 'ng-mocks/lib/mock-module';5import { MockBuilder, MockRender, ngMocks } from 'ng-mocks';6import { MyComponent } from './my.component';7import { MyService } from './my.service';8beforeEach(() => MockBuilder(MyComponent).mock(MyService));9it('should provide the service', () => {10 const fixture = MockRender(MyComponent);11 expect(ngMocks.formatText(fixture)).toEqual('Service: provided');12});13it('should mock the service', () => {14 const fixture = MockRender(MyComponent);15 expect(ngMocks.formatText(fixture)).toEqual('Service: mocked');16});17import { MockBuilder, MockRender, ngMocks } from 'ng-mocks';18import { MyComponent } from './my.component';19import { MyService } from './my.service';20beforeEach(() =>21 MockBuilder(MyComponent).mock(MyService, {22 }),23);24it('should provide the service', () => {25 const fixture = MockRender(MyComponent);26 expect(ngMocks.formatText(fixture)).toEqual('Service: provided');27});28it('should mock the service', () => {29 const fixture = MockRender(MyComponent);30 expect(ngMocks.formatText(fixture)).toEqual('Service: custom');31});32import { MockBuilder, MockRender, ngMocks } from 'ng-mocks';33import { MyComponent } from './my.component';34import { MyService } from './my.service';

Full Screen

Using AI Code Generation

copy

Full Screen

1import {ngModule1} from 'ng-mocks';2describe('ngModule1', () => {3 it('should return a function', () => {4 expect(typeof ngModule1({})).toBe('function');5 });6});7import {ngModule2} from 'ng-mocks';8describe('ngModule2', () => {9 it('should return a function', () => {10 expect(typeof ngModule2({})).toBe('function');11 });12});13import {ngModule3} from 'ng-mocks';14describe('ngModule3', () => {15 it('should return a function', () => {16 expect(typeof ngModule3({})).toBe('function');17 });18});19import {ngModule4} from 'ng-mocks';20describe('ngModule4', () => {21 it('should return a function', () => {22 expect(typeof ngModule4({})).toBe('function');23 });24});25import {ngModule5} from 'ng-mocks';26describe('ngModule5', () => {27 it('should return a function', () => {28 expect(typeof ngModule5({})).toBe('function');29 });30});31import {ngModule6} from 'ng-mocks';32describe('ngModule6', () => {33 it('should return a function', () => {34 expect(typeof ngModule6({})).toBe('function');35 });36});37import {ngModule7} from 'ng-mocks';38describe('ngModule7', () => {39 it('should return a function', () => {40 expect(typeof ngModule7({})).toBe('function');41 });42});43import {ngModule8} from 'ng-mocks';44describe('ngModule8', () => {45 it('should return a function', ()

Full Screen

Using AI Code Generation

copy

Full Screen

1import {ngModule1} from 'ng-mocks';2import {MyModule} from './my.module';3describe('MyModule', () => {4 ngModule1(MyModule);5});6import {ngModule2} from 'ng-mocks';7import {MyModule} from './my.module';8import {MyService} from './my.service';9describe('MyModule', () => {10 ngModule2(MyModule, {11 });12});13import {ngModule3} from 'ng-mocks';14import {MyModule} from './my.module';15import {MyService} from './my.service';16describe('MyModule', () => {17 ngModule3(MyModule, {18 }, `19 `);20});21import {ngModule4} from 'ng-mocks';22import {MyModule} from './my.module';23import {MyService} from './my.service';24import {MyComponent} from './my.component';25describe('MyModule', () => {26 ngModule4(MyModule, {27 }, `28 ]);29});

Full Screen

Using AI Code Generation

copy

Full Screen

1var ngModule1 = require('ng-mocks').ngModule1;2var ngModule2 = require('ng-mocks').ngModule2;3describe('test', function () {4 beforeEach(function () {5 ngModule1('module1');6 ngModule2('module2');7 });8 it('should be able to use the module', function () {9 });10});11module.exports = function(config) {12 config.set({13 });14};15var gulp = require('gulp');16var karma = require('karma').server;17gulp.task('test', function (done) {18 karma.start({19 }, done);20});

Full Screen

Using AI Code Generation

copy

Full Screen

1import {ngModule1} from 'ng-mocks';2import {MyModule} from './my-module';3ngModule1(MyModule).instance(MyService);4import {ngMock} from 'ng-mocks';5import {MyModule} from './my-module';6ngMock.module(MyModule).instance(MyService);7import {ngMocks} from 'ng-mocks';8import {MyModule} from './my-module';9ngMocks.module(MyModule).instance(MyService);10import {ngMocks} from 'ng-mocks';11import {MyModule} from './my-module';12ngMocks.defaultMock(MyModule, MyService);13import {ngMocks} from 'ng-mocks';14import {MyModule} from './my-module';15ngMocks.find(MyModule, MyService);16import {ngMocks} from 'ng-mocks';17import {MyModule} from './my-module';18ngMocks.findInstance(MyModule, MyService);19import {ngMocks} from 'ng-mocks';20import {MyModule} from './my-module';21ngMocks.findInstance(MyModule, MyService);22import {ngMocks} from 'ng-mocks';23import {MyModule} from './my-module';24ngMocks.findInstance(MyModule, MyService);25import {ngMocks} from 'ng-m

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run ng-mocks automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful