ng-mocks 11.2.7 → 11.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/README.md +41 -3174
  3. package/dist/lib/common/core.helpers.d.ts +2 -2
  4. package/dist/lib/common/core.helpers.js +55 -27
  5. package/dist/lib/common/{core.reflect.body.d.ts → core.reflect.body-catch.d.ts} +0 -0
  6. package/dist/lib/common/core.reflect.body-catch.js +12 -0
  7. package/dist/lib/common/core.reflect.body-global.d.ts +3 -0
  8. package/dist/lib/common/core.reflect.body-global.js +11 -0
  9. package/dist/lib/common/core.reflect.directive-resolve.js +6 -4
  10. package/dist/lib/common/core.reflect.jit.d.ts +3 -0
  11. package/dist/lib/common/core.reflect.jit.js +11 -0
  12. package/dist/lib/common/core.reflect.module-resolve.js +6 -4
  13. package/dist/lib/common/core.reflect.pipe-resolve.js +6 -4
  14. package/dist/lib/common/core.tokens.d.ts +2 -2
  15. package/dist/lib/common/core.tokens.js +1 -1
  16. package/dist/lib/common/decorate.inputs.js +2 -2
  17. package/dist/lib/common/decorate.mock.d.ts +3 -0
  18. package/dist/lib/common/decorate.mock.js +13 -0
  19. package/dist/lib/common/decorate.outputs.js +2 -2
  20. package/dist/lib/common/decorate.queries.js +2 -2
  21. package/dist/lib/common/func.is-mock-control-value-accessor.js +2 -3
  22. package/dist/lib/common/func.is-mock-validator.js +2 -3
  23. package/dist/lib/common/func.is-ng-def.d.ts +7 -1
  24. package/dist/lib/common/func.is-ng-def.js +5 -1
  25. package/dist/lib/common/func.is-ng-injection-token.js +2 -3
  26. package/dist/lib/common/func.is-ng-module-def-with-providers.js +2 -3
  27. package/dist/lib/common/func.is-ng-type.d.ts +2 -2
  28. package/dist/lib/common/func.is-ng-type.js +6 -5
  29. package/dist/lib/common/mock-control-value-accessor.d.ts +3 -3
  30. package/dist/lib/common/mock-control-value-accessor.js +1 -1
  31. package/dist/lib/common/mock.js +31 -26
  32. package/dist/lib/common/ng-mocks-universe.d.ts +5 -0
  33. package/dist/lib/common/ng-mocks-universe.js +65 -7
  34. package/dist/lib/mock/clone-providers.js +23 -6
  35. package/dist/lib/mock/decorate-declaration.js +6 -6
  36. package/dist/lib/mock/to-existing-provider.d.ts +1 -1
  37. package/dist/lib/mock/to-factory-provider.d.ts +1 -1
  38. package/dist/lib/mock-builder/mock-builder-stash.js +3 -1
  39. package/dist/lib/mock-builder/mock-builder.js +2 -2
  40. package/dist/lib/mock-builder/mock-builder.performance.js +2 -2
  41. package/dist/lib/mock-builder/mock-builder.promise.js +4 -1
  42. package/dist/lib/mock-builder/promise/create-ng-mocks-overrides-token.js +2 -2
  43. package/dist/lib/mock-builder/promise/create-ng-mocks-touches-token.js +2 -2
  44. package/dist/lib/mock-builder/promise/get-override-meta.js +4 -4
  45. package/dist/lib/mock-builder/promise/get-root-provider-parameters.js +3 -3
  46. package/dist/lib/mock-builder/promise/init-module.js +2 -2
  47. package/dist/lib/mock-builder/promise/init-ng-modules.js +2 -2
  48. package/dist/lib/mock-component/mock-component.d.ts +1 -1
  49. package/dist/lib/mock-component/mock-component.js +9 -17
  50. package/dist/lib/mock-directive/mock-directive.d.ts +1 -1
  51. package/dist/lib/mock-directive/mock-directive.js +10 -23
  52. package/dist/lib/mock-helper/func.global-prepare.d.ts +2 -0
  53. package/dist/lib/mock-helper/func.global-prepare.js +9 -0
  54. package/dist/lib/mock-helper/mock-helper.auto-spy.js +2 -2
  55. package/dist/lib/mock-helper/mock-helper.d.ts +38 -0
  56. package/dist/lib/mock-helper/mock-helper.global-exclude.d.ts +4 -0
  57. package/dist/lib/mock-helper/mock-helper.global-exclude.js +9 -0
  58. package/dist/lib/mock-helper/mock-helper.global-keep.d.ts +4 -0
  59. package/dist/lib/mock-helper/mock-helper.global-keep.js +9 -0
  60. package/dist/lib/mock-helper/mock-helper.global-mock.d.ts +4 -0
  61. package/dist/lib/mock-helper/mock-helper.global-mock.js +9 -0
  62. package/dist/lib/mock-helper/mock-helper.global-replace.d.ts +3 -0
  63. package/dist/lib/mock-helper/mock-helper.global-replace.js +26 -0
  64. package/dist/lib/mock-helper/mock-helper.global-wipe.d.ts +4 -0
  65. package/dist/lib/mock-helper/mock-helper.global-wipe.js +11 -0
  66. package/dist/lib/mock-helper/mock-helper.guts.js +100 -37
  67. package/dist/lib/mock-helper/mock-helper.js +15 -1
  68. package/dist/lib/mock-helper/mock-helper.reset.js +2 -1
  69. package/dist/lib/mock-helper/mock-helper.stub-member.d.ts +2 -0
  70. package/dist/lib/mock-helper/mock-helper.stub-member.js +25 -0
  71. package/dist/lib/mock-helper/mock-helper.stub.js +2 -1
  72. package/dist/lib/mock-helper/mock-helper.throw-on-console.d.ts +2 -0
  73. package/dist/lib/mock-helper/mock-helper.throw-on-console.js +25 -0
  74. package/dist/lib/mock-instance/mock-instance.js +11 -7
  75. package/dist/lib/mock-module/mock-module.d.ts +2 -2
  76. package/dist/lib/mock-module/mock-module.js +7 -9
  77. package/dist/lib/mock-module/mock-ng-def.js +29 -12
  78. package/dist/lib/mock-pipe/mock-pipe.d.ts +2 -2
  79. package/dist/lib/mock-pipe/mock-pipe.js +18 -44
  80. package/dist/lib/mock-provider/mock-provider.d.ts +3 -3
  81. package/dist/lib/mock-provider/mock-provider.js +1 -1
  82. package/dist/lib/mock-render/func.generate-template.d.ts +2 -0
  83. package/dist/lib/mock-render/func.generate-template.js +87 -0
  84. package/dist/lib/mock-render/func.install-prop-reader.d.ts +2 -0
  85. package/dist/lib/mock-render/func.install-prop-reader.js +80 -0
  86. package/dist/lib/mock-render/mock-render.d.ts +16 -2
  87. package/dist/lib/mock-render/mock-render.js +111 -132
  88. package/dist/lib/mock-service/helper.resolve-provider.js +9 -12
  89. package/dist/lib/mock-service/helper.use-factory.js +3 -3
  90. package/dist/lib/mock-service/mock-provider.js +2 -1
  91. package/dist/lib/mock-service/mock-service.d.ts +4 -4
  92. package/dist/lib/mock-service/mock-service.js +1 -1
  93. package/examples/MockBuilder/test.deep.spec.ts +1 -1
  94. package/examples/MockBuilder/test.ng-mocks.spec.ts +1 -1
  95. package/examples/MockForms/test.spec.ts +2 -2
  96. package/examples/MockInstance/test.spec.ts +1 -1
  97. package/examples/MockObservable/test.spec.ts +7 -4
  98. package/examples/MockPipe/test.spec.ts +1 -1
  99. package/examples/MockProvider/test.spec.ts +5 -6
  100. package/examples/MockReactiveForms/test.spec.ts +2 -2
  101. package/examples/MockViewChild/test.spec.ts +3 -3
  102. package/examples/TestAttributeDirective/test.spec.ts +1 -1
  103. package/examples/TestHttpInterceptor/test.spec.ts +10 -4
  104. package/examples/TestHttpRequest/test.spec.ts +6 -4
  105. package/examples/TestLifecycleHooks/test.spec.ts +6 -2
  106. package/examples/TestLifecycleHooks/test.string.spec.ts +3 -2
  107. package/examples/TestLifecycleHooks/test.type-without-params.spec.ts +3 -2
  108. package/examples/TestMultiToken/test.spec.ts +3 -3
  109. package/examples/TestProvider/test.spec.ts +2 -3
  110. package/examples/TestProviderWithDependencies/test.spec.ts +7 -3
  111. package/examples/TestProviderWithUseClass/test.spec.ts +9 -3
  112. package/examples/TestProviderWithUseExisting/test.spec.ts +9 -3
  113. package/examples/TestProviderWithUseFactory/test.spec.ts +2 -3
  114. package/examples/TestProviderWithUseValue/test.spec.ts +4 -4
  115. package/examples/TestRoute/test.spec.ts +7 -7
  116. package/examples/TestRoutingGuard/test.spec.ts +8 -6
  117. package/examples/TestRoutingResolver/test.spec.ts +6 -4
  118. package/examples/TestToken/test.spec.ts +7 -6
  119. package/examples/main/test.spec.ts +2 -2
  120. package/examples/ngMocksFaster/test.spec.ts +2 -2
  121. package/package.json +2 -3
  122. package/dist/lib/common/core.reflect.body.js +0 -12
  123. package/dist/lib/common/core.reflect.d.ts +0 -6
  124. package/dist/lib/common/core.reflect.js +0 -10
  125. package/dist/lib/common/mock-of.d.ts +0 -3
  126. package/dist/lib/common/mock-of.js +0 -23
@@ -1,17 +1,17 @@
1
1
  import { AnyType } from '../common/core.types';
2
2
  /**
3
- * @see https://github.com/ike18t/ng-mocks#how-to-mock-a-service
3
+ * @see https://github.com/ike18t/ng-mocks#how-to-mock-services
4
4
  */
5
5
  export declare function MockService(service: boolean | number | string | null | undefined): undefined;
6
6
  /**
7
- * @see https://github.com/ike18t/ng-mocks#how-to-mock-a-service
7
+ * @see https://github.com/ike18t/ng-mocks#how-to-mock-services
8
8
  */
9
9
  export declare function MockService<T>(service: AnyType<T>, overrides?: Partial<T>, mockNamePrefix?: string): T;
10
10
  /**
11
- * @see https://github.com/ike18t/ng-mocks#how-to-mock-a-service
11
+ * @see https://github.com/ike18t/ng-mocks#how-to-mock-services
12
12
  */
13
13
  export declare function MockService<T>(service: AnyType<T>, mockNamePrefix?: string): T;
14
14
  /**
15
- * @see https://github.com/ike18t/ng-mocks#how-to-mock-a-service
15
+ * @see https://github.com/ike18t/ng-mocks#how-to-mock-services
16
16
  */
17
17
  export declare function MockService<T = any>(service: object, mockNamePrefix?: string): T;
@@ -102,4 +102,4 @@ function MockService(service) {
102
102
  return value;
103
103
  }
104
104
  exports.MockService = MockService;
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL21vY2stc2VydmljZS9tb2NrLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0Esb0VBQTZEO0FBRTdELG1EQUE0QztBQUM1QyxpREFBMEM7QUFDMUMsaURBQTBDO0FBQzFDLDZEQUFzRDtBQUV0RCxJQUFNLGVBQWUsR0FFakI7SUFDRixDQUFDLHdCQUFZLEVBQUUsVUFBQyxPQUFZLElBQUssT0FBQSw2QkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQTVELENBQTRELENBQUM7SUFDOUY7UUFDRSx1QkFBVztRQUNYLFVBQUMsT0FBWSxFQUFFLE1BQWM7WUFDM0IsT0FBQSw2QkFBaUIsQ0FBQyxZQUFZLENBQUMsV0FBUSxNQUFNLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxnQkFBZ0IsQ0FBRSxDQUFDO1FBQXBGLENBQW9GO0tBQ3ZGO0lBQ0QsQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQWxCLENBQWtCLEVBQUUsY0FBTSxPQUFBLEVBQUUsRUFBRixDQUFFLENBQUM7SUFDckM7UUFDRSx1QkFBVztRQUNYLFVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFROztZQUN4QixJQUFNLEtBQUssR0FBRyw2QkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDOztnQkFDdkYsS0FBdUIsSUFBQSxLQUFBLFNBQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQSxnQkFBQSw0QkFBRTtvQkFBeEMsSUFBTSxRQUFRLFdBQUE7b0JBQ2pCLElBQU0sSUFBSSxHQUFRLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBRyxNQUFNLElBQUksVUFBVSxVQUFJLFFBQVUsQ0FBQyxDQUFDO29CQUNyRixJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7d0JBQ3RCLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUM7cUJBQ3hCO2lCQUNGOzs7Ozs7Ozs7WUFDRCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFFN0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsSUFBTSxZQUFZLEdBQUcsVUFBQyxPQUFZLEVBQUUsTUFBYyxFQUFFLFFBQTRCOzs7UUFDOUUsS0FBa0MsSUFBQSxvQkFBQSxTQUFBLGVBQWUsQ0FBQSxnREFBQSw2RUFBRTtZQUF4QyxJQUFBLEtBQUEsb0NBQW1CLEVBQWxCLEtBQUssUUFBQSxFQUFFLFVBQVUsUUFBQTtZQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNuQixTQUFTO2FBQ1Y7WUFFRCxPQUFPLFVBQVUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQzlDOzs7Ozs7Ozs7QUFDSCxDQUFDLENBQUM7QUFzQkYsU0FBZ0IsV0FBVyxDQUFDLE9BQVk7SUFDdEMsd0RBQXdEO0lBRGhCLGNBQWM7U0FBZCxVQUFjLEVBQWQscUJBQWMsRUFBZCxJQUFjO1FBQWQsNkJBQWM7O0lBR3RELElBQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUYsSUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFbEcsSUFBTSxLQUFLLEdBQVEsWUFBWSxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFdEUsSUFBSSxTQUFTLEVBQUU7UUFDYiwwQkFBYyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztLQUNsQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQWJELGtDQWFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW55VHlwZSB9IGZyb20gJy4uL2NvbW1vbi9jb3JlLnR5cGVzJztcbmltcG9ydCBtb2NrSGVscGVyU3R1YiBmcm9tICcuLi9tb2NrLWhlbHBlci9tb2NrLWhlbHBlci5zdHViJztcblxuaW1wb3J0IGNoZWNrSXNDbGFzcyBmcm9tICcuL2NoZWNrLmlzLWNsYXNzJztcbmltcG9ydCBjaGVja0lzRnVuYyBmcm9tICcuL2NoZWNrLmlzLWZ1bmMnO1xuaW1wb3J0IGNoZWNrSXNJbnN0IGZyb20gJy4vY2hlY2suaXMtaW5zdCc7XG5pbXBvcnQgaGVscGVyTW9ja1NlcnZpY2UgZnJvbSAnLi9oZWxwZXIubW9jay1zZXJ2aWNlJztcblxuY29uc3QgbW9ja1ZhcmlhYmxlTWFwOiBBcnJheTxcbiAgWyhkZWY6IGFueSkgPT4gYm9vbGVhbiwgKHNlcnZpY2U6IGFueSwgcHJlZml4OiBzdHJpbmcsIGNhbGxiYWNrOiB0eXBlb2YgTW9ja1NlcnZpY2UpID0+IGFueV1cbj4gPSBbXG4gIFtjaGVja0lzQ2xhc3MsIChzZXJ2aWNlOiBhbnkpID0+IGhlbHBlck1vY2tTZXJ2aWNlLmNyZWF0ZU1vY2tGcm9tUHJvdG90eXBlKHNlcnZpY2UucHJvdG90eXBlKV0sXG4gIFtcbiAgICBjaGVja0lzRnVuYyxcbiAgICAoc2VydmljZTogYW55LCBwcmVmaXg6IHN0cmluZykgPT5cbiAgICAgIGhlbHBlck1vY2tTZXJ2aWNlLm1vY2tGdW5jdGlvbihgZnVuYzoke3ByZWZpeCB8fCBzZXJ2aWNlLm5hbWUgfHwgJ2Fycm93LWZ1bmN0aW9uJ31gKSxcbiAgXSxcbiAgW2RlZiA9PiBBcnJheS5pc0FycmF5KGRlZiksICgpID0+IFtdXSxcbiAgW1xuICAgIGNoZWNrSXNJbnN0LFxuICAgIChzZXJ2aWNlLCBwcmVmaXgsIGNhbGxiYWNrKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGhlbHBlck1vY2tTZXJ2aWNlLmNyZWF0ZU1vY2tGcm9tUHJvdG90eXBlKHNlcnZpY2UuY29uc3RydWN0b3IucHJvdG90eXBlKTtcbiAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgT2JqZWN0LmtleXMoc2VydmljZSkpIHtcbiAgICAgICAgY29uc3QgbW9jazogYW55ID0gY2FsbGJhY2soc2VydmljZVtwcm9wZXJ0eV0sIGAke3ByZWZpeCB8fCAnaW5zdGFuY2UnfS4ke3Byb3BlcnR5fWApO1xuICAgICAgICBpZiAobW9jayAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdmFsdWVbcHJvcGVydHldID0gbW9jaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHZhbHVlLCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc2VydmljZSkpO1xuXG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSxcbiAgXSxcbl07XG5cbmNvbnN0IG1vY2tWYXJpYWJsZSA9IChzZXJ2aWNlOiBhbnksIHByZWZpeDogc3RyaW5nLCBjYWxsYmFjazogdHlwZW9mIE1vY2tTZXJ2aWNlKSA9PiB7XG4gIGZvciAoY29uc3QgW2NoZWNrLCBjcmVhdGVNb2NrXSBvZiBtb2NrVmFyaWFibGVNYXApIHtcbiAgICBpZiAoIWNoZWNrKHNlcnZpY2UpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3JlYXRlTW9jayhzZXJ2aWNlLCBwcmVmaXgsIGNhbGxiYWNrKTtcbiAgfVxufTtcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pa2UxOHQvbmctbW9ja3MjaG93LXRvLW1vY2stYS1zZXJ2aWNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBNb2NrU2VydmljZShzZXJ2aWNlOiBib29sZWFuIHwgbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pa2UxOHQvbmctbW9ja3MjaG93LXRvLW1vY2stYS1zZXJ2aWNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBNb2NrU2VydmljZTxUPihzZXJ2aWNlOiBBbnlUeXBlPFQ+LCBvdmVycmlkZXM/OiBQYXJ0aWFsPFQ+LCBtb2NrTmFtZVByZWZpeD86IHN0cmluZyk6IFQ7XG5cbi8qKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaWtlMTh0L25nLW1vY2tzI2hvdy10by1tb2NrLWEtc2VydmljZVxuICovXG5leHBvcnQgZnVuY3Rpb24gTW9ja1NlcnZpY2U8VD4oc2VydmljZTogQW55VHlwZTxUPiwgbW9ja05hbWVQcmVmaXg/OiBzdHJpbmcpOiBUO1xuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2lrZTE4dC9uZy1tb2NrcyNob3ctdG8tbW9jay1hLXNlcnZpY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE1vY2tTZXJ2aWNlPFQgPSBhbnk+KHNlcnZpY2U6IG9iamVjdCwgbW9ja05hbWVQcmVmaXg/OiBzdHJpbmcpOiBUO1xuXG5leHBvcnQgZnVuY3Rpb24gTW9ja1NlcnZpY2Uoc2VydmljZTogYW55LCAuLi5hcmdzOiBhbnlbXSk6IGFueSB7XG4gIC8vIG1vY2tpbmcgYWxsIG1ldGhvZHMgLyBwcm9wZXJ0aWVzIG9mIGEgY2xhc3MgLyBvYmplY3QuXG5cbiAgY29uc3QgbW9ja05hbWVQcmVmaXggPSBhcmdzLmxlbmd0aCA+IDAgJiYgdHlwZW9mIGFyZ3NbMF0gPT09ICdzdHJpbmcnID8gYXJnc1swXSA6IGFyZ3NbMV07XG4gIGNvbnN0IG92ZXJyaWRlcyA9IGFyZ3MubGVuZ3RoID4gMCAmJiBhcmdzWzBdICYmIHR5cGVvZiBhcmdzWzBdID09PSAnb2JqZWN0JyA/IGFyZ3NbMF0gOiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgdmFsdWU6IGFueSA9IG1vY2tWYXJpYWJsZShzZXJ2aWNlLCBtb2NrTmFtZVByZWZpeCwgTW9ja1NlcnZpY2UpO1xuXG4gIGlmIChvdmVycmlkZXMpIHtcbiAgICBtb2NrSGVscGVyU3R1Yih2YWx1ZSwgb3ZlcnJpZGVzKTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cbiJdfQ==
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL21vY2stc2VydmljZS9tb2NrLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0Esb0VBQTZEO0FBRTdELG1EQUE0QztBQUM1QyxpREFBMEM7QUFDMUMsaURBQTBDO0FBQzFDLDZEQUFzRDtBQUV0RCxJQUFNLGVBQWUsR0FFakI7SUFDRixDQUFDLHdCQUFZLEVBQUUsVUFBQyxPQUFZLElBQUssT0FBQSw2QkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQTVELENBQTRELENBQUM7SUFDOUY7UUFDRSx1QkFBVztRQUNYLFVBQUMsT0FBWSxFQUFFLE1BQWM7WUFDM0IsT0FBQSw2QkFBaUIsQ0FBQyxZQUFZLENBQUMsV0FBUSxNQUFNLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxnQkFBZ0IsQ0FBRSxDQUFDO1FBQXBGLENBQW9GO0tBQ3ZGO0lBQ0QsQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQWxCLENBQWtCLEVBQUUsY0FBTSxPQUFBLEVBQUUsRUFBRixDQUFFLENBQUM7SUFDckM7UUFDRSx1QkFBVztRQUNYLFVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFROztZQUN4QixJQUFNLEtBQUssR0FBRyw2QkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDOztnQkFDdkYsS0FBdUIsSUFBQSxLQUFBLFNBQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQSxnQkFBQSw0QkFBRTtvQkFBeEMsSUFBTSxRQUFRLFdBQUE7b0JBQ2pCLElBQU0sSUFBSSxHQUFRLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBRyxNQUFNLElBQUksVUFBVSxVQUFJLFFBQVUsQ0FBQyxDQUFDO29CQUNyRixJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7d0JBQ3RCLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUM7cUJBQ3hCO2lCQUNGOzs7Ozs7Ozs7WUFDRCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFFN0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsSUFBTSxZQUFZLEdBQUcsVUFBQyxPQUFZLEVBQUUsTUFBYyxFQUFFLFFBQTRCOzs7UUFDOUUsS0FBa0MsSUFBQSxvQkFBQSxTQUFBLGVBQWUsQ0FBQSxnREFBQSw2RUFBRTtZQUF4QyxJQUFBLEtBQUEsb0NBQW1CLEVBQWxCLEtBQUssUUFBQSxFQUFFLFVBQVUsUUFBQTtZQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNuQixTQUFTO2FBQ1Y7WUFFRCxPQUFPLFVBQVUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQzlDOzs7Ozs7Ozs7QUFDSCxDQUFDLENBQUM7QUFzQkYsU0FBZ0IsV0FBVyxDQUFDLE9BQVk7SUFDdEMsd0RBQXdEO0lBRGhCLGNBQWM7U0FBZCxVQUFjLEVBQWQscUJBQWMsRUFBZCxJQUFjO1FBQWQsNkJBQWM7O0lBR3RELElBQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUYsSUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFbEcsSUFBTSxLQUFLLEdBQVEsWUFBWSxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFdEUsSUFBSSxTQUFTLEVBQUU7UUFDYiwwQkFBYyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztLQUNsQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQWJELGtDQWFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW55VHlwZSB9IGZyb20gJy4uL2NvbW1vbi9jb3JlLnR5cGVzJztcbmltcG9ydCBtb2NrSGVscGVyU3R1YiBmcm9tICcuLi9tb2NrLWhlbHBlci9tb2NrLWhlbHBlci5zdHViJztcblxuaW1wb3J0IGNoZWNrSXNDbGFzcyBmcm9tICcuL2NoZWNrLmlzLWNsYXNzJztcbmltcG9ydCBjaGVja0lzRnVuYyBmcm9tICcuL2NoZWNrLmlzLWZ1bmMnO1xuaW1wb3J0IGNoZWNrSXNJbnN0IGZyb20gJy4vY2hlY2suaXMtaW5zdCc7XG5pbXBvcnQgaGVscGVyTW9ja1NlcnZpY2UgZnJvbSAnLi9oZWxwZXIubW9jay1zZXJ2aWNlJztcblxuY29uc3QgbW9ja1ZhcmlhYmxlTWFwOiBBcnJheTxcbiAgWyhkZWY6IGFueSkgPT4gYm9vbGVhbiwgKHNlcnZpY2U6IGFueSwgcHJlZml4OiBzdHJpbmcsIGNhbGxiYWNrOiB0eXBlb2YgTW9ja1NlcnZpY2UpID0+IGFueV1cbj4gPSBbXG4gIFtjaGVja0lzQ2xhc3MsIChzZXJ2aWNlOiBhbnkpID0+IGhlbHBlck1vY2tTZXJ2aWNlLmNyZWF0ZU1vY2tGcm9tUHJvdG90eXBlKHNlcnZpY2UucHJvdG90eXBlKV0sXG4gIFtcbiAgICBjaGVja0lzRnVuYyxcbiAgICAoc2VydmljZTogYW55LCBwcmVmaXg6IHN0cmluZykgPT5cbiAgICAgIGhlbHBlck1vY2tTZXJ2aWNlLm1vY2tGdW5jdGlvbihgZnVuYzoke3ByZWZpeCB8fCBzZXJ2aWNlLm5hbWUgfHwgJ2Fycm93LWZ1bmN0aW9uJ31gKSxcbiAgXSxcbiAgW2RlZiA9PiBBcnJheS5pc0FycmF5KGRlZiksICgpID0+IFtdXSxcbiAgW1xuICAgIGNoZWNrSXNJbnN0LFxuICAgIChzZXJ2aWNlLCBwcmVmaXgsIGNhbGxiYWNrKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGhlbHBlck1vY2tTZXJ2aWNlLmNyZWF0ZU1vY2tGcm9tUHJvdG90eXBlKHNlcnZpY2UuY29uc3RydWN0b3IucHJvdG90eXBlKTtcbiAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgT2JqZWN0LmtleXMoc2VydmljZSkpIHtcbiAgICAgICAgY29uc3QgbW9jazogYW55ID0gY2FsbGJhY2soc2VydmljZVtwcm9wZXJ0eV0sIGAke3ByZWZpeCB8fCAnaW5zdGFuY2UnfS4ke3Byb3BlcnR5fWApO1xuICAgICAgICBpZiAobW9jayAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdmFsdWVbcHJvcGVydHldID0gbW9jaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHZhbHVlLCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc2VydmljZSkpO1xuXG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSxcbiAgXSxcbl07XG5cbmNvbnN0IG1vY2tWYXJpYWJsZSA9IChzZXJ2aWNlOiBhbnksIHByZWZpeDogc3RyaW5nLCBjYWxsYmFjazogdHlwZW9mIE1vY2tTZXJ2aWNlKSA9PiB7XG4gIGZvciAoY29uc3QgW2NoZWNrLCBjcmVhdGVNb2NrXSBvZiBtb2NrVmFyaWFibGVNYXApIHtcbiAgICBpZiAoIWNoZWNrKHNlcnZpY2UpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3JlYXRlTW9jayhzZXJ2aWNlLCBwcmVmaXgsIGNhbGxiYWNrKTtcbiAgfVxufTtcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pa2UxOHQvbmctbW9ja3MjaG93LXRvLW1vY2stc2VydmljZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE1vY2tTZXJ2aWNlKHNlcnZpY2U6IGJvb2xlYW4gfCBudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2lrZTE4dC9uZy1tb2NrcyNob3ctdG8tbW9jay1zZXJ2aWNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gTW9ja1NlcnZpY2U8VD4oc2VydmljZTogQW55VHlwZTxUPiwgb3ZlcnJpZGVzPzogUGFydGlhbDxUPiwgbW9ja05hbWVQcmVmaXg/OiBzdHJpbmcpOiBUO1xuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2lrZTE4dC9uZy1tb2NrcyNob3ctdG8tbW9jay1zZXJ2aWNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gTW9ja1NlcnZpY2U8VD4oc2VydmljZTogQW55VHlwZTxUPiwgbW9ja05hbWVQcmVmaXg/OiBzdHJpbmcpOiBUO1xuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2lrZTE4dC9uZy1tb2NrcyNob3ctdG8tbW9jay1zZXJ2aWNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gTW9ja1NlcnZpY2U8VCA9IGFueT4oc2VydmljZTogb2JqZWN0LCBtb2NrTmFtZVByZWZpeD86IHN0cmluZyk6IFQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBNb2NrU2VydmljZShzZXJ2aWNlOiBhbnksIC4uLmFyZ3M6IGFueVtdKTogYW55IHtcbiAgLy8gbW9ja2luZyBhbGwgbWV0aG9kcyAvIHByb3BlcnRpZXMgb2YgYSBjbGFzcyAvIG9iamVjdC5cblxuICBjb25zdCBtb2NrTmFtZVByZWZpeCA9IGFyZ3MubGVuZ3RoID4gMCAmJiB0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycgPyBhcmdzWzBdIDogYXJnc1sxXTtcbiAgY29uc3Qgb3ZlcnJpZGVzID0gYXJncy5sZW5ndGggPiAwICYmIGFyZ3NbMF0gJiYgdHlwZW9mIGFyZ3NbMF0gPT09ICdvYmplY3QnID8gYXJnc1swXSA6IHVuZGVmaW5lZDtcblxuICBjb25zdCB2YWx1ZTogYW55ID0gbW9ja1ZhcmlhYmxlKHNlcnZpY2UsIG1vY2tOYW1lUHJlZml4LCBNb2NrU2VydmljZSk7XG5cbiAgaWYgKG92ZXJyaWRlcykge1xuICAgIG1vY2tIZWxwZXJTdHViKHZhbHVlLCBvdmVycmlkZXMpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuIl19
@@ -119,7 +119,7 @@ describe('MockBuilder:deep', () => {
119
119
  .provide(MyCustomProvider1)
120
120
  .provide([MyCustomProvider2, MyCustomProvider3])
121
121
 
122
- // Now the pipe won't be replaced with its mock copy.
122
+ // Now the pipe will not be replaced with its mock copy.
123
123
  .keep(RestorePipe)
124
124
 
125
125
  // Extra configuration.
@@ -60,7 +60,7 @@ describe('MockBuilder:ngMocks', () => {
60
60
  })
61
61
  .mock(TOKEN_CUSTOMIZE, 'My_Token')
62
62
 
63
- // Now the pipe won't be replaced with its mock copy.
63
+ // Now the pipe will not be replaced with its mock copy.
64
64
  .keep(RestorePipe)
65
65
 
66
66
  // Even it belongs to the module we want to keep,
@@ -46,8 +46,8 @@ class TestedComponent {
46
46
  }
47
47
 
48
48
  describe('MockForms', () => {
49
- // That's our spy on writeValue calls.
50
- // With auto spy this code isn't needed.
49
+ // That is our spy on writeValue calls.
50
+ // With auto spy this code is not needed.
51
51
  const writeValue =
52
52
  typeof jest === 'undefined'
53
53
  ? jasmine.createSpy('writeValue')
@@ -12,7 +12,7 @@ import {
12
12
  } from 'ng-mocks';
13
13
  import { Observable, Subject } from 'rxjs';
14
14
 
15
- // A copy of EMPTY, which doesn't exist in A5.
15
+ // A copy of EMPTY, which does not exist in A5.
16
16
  const EMPTY = new Subject<any>();
17
17
  EMPTY.complete();
18
18
 
@@ -1,6 +1,5 @@
1
1
  import { CommonModule } from '@angular/common';
2
2
  import { Component, Injectable, NgModule } from '@angular/core';
3
- import { TestBed } from '@angular/core/testing';
4
3
  import {
5
4
  MockBuilder,
6
5
  MockInstance,
@@ -68,7 +67,7 @@ describe('MockObservable', () => {
68
67
  // Let's render the component.
69
68
  const fixture = MockRender(TargetComponent);
70
69
 
71
- // We haven't emitted anything yet, let's check the template.
70
+ // We have not emitted anything yet, let's check the template.
72
71
  expect(fixture.nativeElement.innerHTML).not.toContain('1');
73
72
  expect(fixture.nativeElement.innerHTML).not.toContain('2');
74
73
  expect(fixture.nativeElement.innerHTML).not.toContain('3');
@@ -93,7 +92,11 @@ describe('MockObservable', () => {
93
92
 
94
93
  // Checking that a sibling method has been replaced
95
94
  // with a mock object too.
96
- expect(TestBed.get(TargetService).getValue$).toBeDefined();
97
- expect(TestBed.get(TargetService).getValue$()).toBeUndefined();
95
+ expect(
96
+ fixture.point.injector.get(TargetService).getValue$,
97
+ ).toBeDefined();
98
+ expect(
99
+ fixture.point.injector.get(TargetService).getValue$(),
100
+ ).toBeUndefined();
98
101
  });
99
102
  });
@@ -36,7 +36,7 @@ describe('MockPipe', () => {
36
36
  );
37
37
 
38
38
  // Also we can find an instance of the pipe in
39
- // the fixture if it's needed.
39
+ // the fixture if it is needed.
40
40
  const pipe = ngMocks.findInstance(DependencyPipe);
41
41
  expect(pipe.transform).toHaveBeenCalledWith('foo');
42
42
  expect(pipe.transform).toHaveBeenCalledTimes(1);
@@ -6,7 +6,7 @@ import {
6
6
  InjectionToken,
7
7
  } from '@angular/core';
8
8
  import { TestBed } from '@angular/core/testing';
9
- import { MockProvider } from 'ng-mocks';
9
+ import { MockProvider, MockRender } from 'ng-mocks';
10
10
 
11
11
  const UNK_TOKEN = new InjectionToken('UNK_TOKEN');
12
12
  const STR_TOKEN = new InjectionToken<string>('STR_TOKEN');
@@ -72,15 +72,14 @@ describe('MockProvider', () => {
72
72
  it('uses mock providers', () => {
73
73
  // overriding the token's data that does affect the provided token.
74
74
  mockObj.value = 321;
75
- const fixture = TestBed.createComponent(TargetComponent);
76
- fixture.detectChanges();
75
+ const fixture = MockRender(TargetComponent);
77
76
  expect(
78
- fixture.debugElement.injector.get(Dependency1Service).echo(),
77
+ fixture.point.injector.get(Dependency1Service).echo(),
79
78
  ).toBeUndefined();
80
79
  expect(
81
- fixture.debugElement.injector.get(Dependency2Service).echo(),
80
+ fixture.point.injector.get(Dependency2Service).echo(),
82
81
  ).toBeUndefined();
83
- expect(fixture.debugElement.injector.get(OBJ_TOKEN)).toBe(
82
+ expect(fixture.point.injector.get(OBJ_TOKEN)).toBe(
84
83
  mockObj as any,
85
84
  );
86
85
  expect(fixture.nativeElement.innerHTML).not.toContain('"target"');
@@ -42,8 +42,8 @@ class TestedComponent {
42
42
  }
43
43
 
44
44
  describe('MockReactiveForms', () => {
45
- // That's our spy on writeValue calls.
46
- // With auto spy this code isn't needed.
45
+ // That is our spy on writeValue calls.
46
+ // With auto spy this code is not needed.
47
47
  const writeValue =
48
48
  typeof jest === 'undefined'
49
49
  ? jasmine.createSpy('writeValue')
@@ -40,7 +40,7 @@ class TargetModule {}
40
40
 
41
41
  describe('MockViewChild', () => {
42
42
  // It failed instantly, because the mock instance of ChildComponent
43
- // doesn't have form and form.valid would cause
43
+ // does not have form and form.valid would cause
44
44
  // "Cannot read property 'valid' of undefined".
45
45
  // Therefore we need to customize the mock instance before it has
46
46
  // been rendered.
@@ -54,14 +54,14 @@ describe('MockViewChild', () => {
54
54
  })),
55
55
  );
56
56
 
57
- // Don't forget to clean up the customization.
57
+ // Do not forget to clean up the customization.
58
58
  afterAll(MockReset);
59
59
 
60
60
  // Normal test setup
61
61
  beforeEach(() => MockBuilder(ParentComponent, TargetModule));
62
62
 
63
63
  it('renders and finds the mock child component', () => {
64
- // doesn't fail anymore.
64
+ // does not fail anymore.
65
65
  const fixture = MockRender(ParentComponent);
66
66
 
67
67
  // profit, now we can verify the template.
@@ -79,7 +79,7 @@ describe('TestAttributeDirective', () => {
79
79
  'style="background-color: red;"',
80
80
  );
81
81
 
82
- // Let's switch the color, we don't need `.point`, because we
82
+ // Let's switch the color, we do not need `.point`, because we
83
83
  // access a middle component of MockRender.
84
84
  fixture.componentInstance.color = 'blue';
85
85
  fixture.detectChanges(); // shaking the template
@@ -12,8 +12,11 @@ import {
12
12
  HttpTestingController,
13
13
  } from '@angular/common/http/testing';
14
14
  import { Injectable, NgModule } from '@angular/core';
15
- import { TestBed } from '@angular/core/testing';
16
- import { MockBuilder, NG_MOCKS_INTERCEPTORS } from 'ng-mocks';
15
+ import {
16
+ MockBuilder,
17
+ MockRender,
18
+ NG_MOCKS_INTERCEPTORS,
19
+ } from 'ng-mocks';
17
20
  import { Observable } from 'rxjs';
18
21
 
19
22
  // An interceptor we want to test.
@@ -88,8 +91,11 @@ describe('TestHttpInterceptor', () => {
88
91
  });
89
92
 
90
93
  it('triggers interceptor', () => {
91
- const client: HttpClient = TestBed.get(HttpClient);
92
- const httpMock: HttpTestingController = TestBed.get(
94
+ const fixture = MockRender('');
95
+ const client: HttpClient = fixture.debugElement.injector.get(
96
+ HttpClient,
97
+ );
98
+ const httpMock: HttpTestingController = fixture.debugElement.injector.get(
93
99
  HttpTestingController,
94
100
  );
95
101
 
@@ -4,8 +4,7 @@ import {
4
4
  HttpTestingController,
5
5
  } from '@angular/common/http/testing';
6
6
  import { Injectable, NgModule } from '@angular/core';
7
- import { TestBed } from '@angular/core/testing';
8
- import { MockBuilder } from 'ng-mocks';
7
+ import { MockBuilder, MockRender } from 'ng-mocks';
9
8
  import { Observable } from 'rxjs';
10
9
 
11
10
  // A service that does http requests.
@@ -39,9 +38,12 @@ describe('TestHttpRequest', () => {
39
38
  });
40
39
 
41
40
  it('sends a request', () => {
41
+ const fixture = MockRender('');
42
42
  // Let's extract the service and http controller for testing.
43
- const service: TargetService = TestBed.get(TargetService);
44
- const httpMock: HttpTestingController = TestBed.get(
43
+ const service: TargetService = fixture.debugElement.injector.get(
44
+ TargetService,
45
+ );
46
+ const httpMock: HttpTestingController = fixture.debugElement.injector.get(
45
47
  HttpTestingController,
46
48
  );
47
49
 
@@ -23,7 +23,9 @@ describe('TestLifecycleHooks', () => {
23
23
  { detectChanges: false },
24
24
  );
25
25
 
26
- const service: TargetService = TestBed.get(TargetService);
26
+ const service: TargetService = fixture.point.injector.get(
27
+ TargetService,
28
+ );
27
29
 
28
30
  // By default nothing should be initialized, but ctor.
29
31
  expect(service.ctor).toHaveBeenCalledTimes(1); // changed
@@ -95,7 +97,9 @@ describe('TestLifecycleHooks', () => {
95
97
  const fixture = TestBed.createComponent(TargetComponent);
96
98
  fixture.componentInstance.input = '';
97
99
 
98
- const service: TargetService = TestBed.get(TargetService);
100
+ const service: TargetService = fixture.debugElement.injector.get(
101
+ TargetService,
102
+ );
99
103
 
100
104
  // By default nothing should be initialized.
101
105
  expect(service.onChanges).toHaveBeenCalledTimes(0);
@@ -1,4 +1,3 @@
1
- import { TestBed } from '@angular/core/testing';
2
1
  import { MockBuilder, MockRender, ngMocks } from 'ng-mocks';
3
2
 
4
3
  import {
@@ -23,7 +22,9 @@ describe('TestLifecycleHooks:string', () => {
23
22
  },
24
23
  );
25
24
 
26
- const service: TargetService = TestBed.get(TargetService);
25
+ const service: TargetService = fixture.point.injector.get(
26
+ TargetService,
27
+ );
27
28
 
28
29
  // By default nothing should be initialized, but ctor.
29
30
  expect(service.ctor).toHaveBeenCalledTimes(1); // changed
@@ -1,4 +1,3 @@
1
- import { TestBed } from '@angular/core/testing';
2
1
  import { MockBuilder, MockRender, ngMocks } from 'ng-mocks';
3
2
 
4
3
  import {
@@ -19,7 +18,9 @@ describe('TestLifecycleHooks:type-without-params', () => {
19
18
  detectChanges: false,
20
19
  });
21
20
 
22
- const service: TargetService = TestBed.get(TargetService);
21
+ const service: TargetService = fixture.point.injector.get(
22
+ TargetService,
23
+ );
23
24
 
24
25
  // By default nothing should be initialized, but ctor.
25
26
  expect(service.ctor).toHaveBeenCalledTimes(1); // changed
@@ -1,6 +1,5 @@
1
1
  import { Injectable, InjectionToken, NgModule } from '@angular/core';
2
- import { TestBed } from '@angular/core/testing';
3
- import { MockBuilder } from 'ng-mocks';
2
+ import { MockBuilder, MockRender } from 'ng-mocks';
4
3
 
5
4
  const TOKEN_MULTI = new InjectionToken('MULTI');
6
5
 
@@ -49,7 +48,8 @@ describe('TestMultiToken', () => {
49
48
  beforeEach(() => MockBuilder(TOKEN_MULTI, TargetModule));
50
49
 
51
50
  it('creates TOKEN_MULTI', () => {
52
- const tokens = TestBed.get(TOKEN_MULTI);
51
+ const tokens = MockRender<any[]>(TOKEN_MULTI).point
52
+ .componentInstance;
53
53
 
54
54
  expect(tokens).toEqual(jasmine.any(Array));
55
55
  expect(tokens.length).toEqual(4);
@@ -1,6 +1,5 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { TestBed } from '@angular/core/testing';
3
- import { MockBuilder } from 'ng-mocks';
2
+ import { MockBuilder, MockRender } from 'ng-mocks';
4
3
 
5
4
  // A simple service, might have contained more logic,
6
5
  // but it is redundant for the test demonstration.
@@ -18,7 +17,7 @@ describe('TestProvider', () => {
18
17
  beforeEach(() => MockBuilder(TargetService));
19
18
 
20
19
  it('returns value on echo', () => {
21
- const service = TestBed.get(TargetService);
20
+ const service = MockRender(TargetService).point.componentInstance;
22
21
 
23
22
  expect(service.echo()).toEqual(service.value);
24
23
  });
@@ -1,6 +1,10 @@
1
1
  import { Injectable, NgModule } from '@angular/core';
2
- import { TestBed } from '@angular/core/testing';
3
- import { MockBuilder, MockInstance, MockReset } from 'ng-mocks';
2
+ import {
3
+ MockBuilder,
4
+ MockInstance,
5
+ MockRender,
6
+ MockReset,
7
+ } from 'ng-mocks';
4
8
 
5
9
  // Dependency 1
6
10
  @Injectable()
@@ -66,7 +70,7 @@ describe('TestProviderWithDependencies', () => {
66
70
 
67
71
  it('creates TargetService', () => {
68
72
  // Creates an instance only if all dependencies are present.
69
- const service = TestBed.get(TargetService);
73
+ const service = MockRender(TargetService).point.componentInstance;
70
74
 
71
75
  // Let's assert behavior.
72
76
  expect(service.value1).toEqual('mock1');
@@ -1,6 +1,10 @@
1
1
  import { Injectable, NgModule } from '@angular/core';
2
- import { TestBed } from '@angular/core/testing';
3
- import { MockBuilder, MockInstance, MockReset } from 'ng-mocks';
2
+ import {
3
+ MockBuilder,
4
+ MockInstance,
5
+ MockRender,
6
+ MockReset,
7
+ } from 'ng-mocks';
4
8
 
5
9
  // A service we want to replace via useClass.
6
10
  @Injectable()
@@ -66,7 +70,9 @@ describe('TestProviderWithUseClass', () => {
66
70
  afterAll(MockReset);
67
71
 
68
72
  it('respects all dependencies', () => {
69
- const service = TestBed.get(Target1Service);
73
+ const service = MockRender<
74
+ Target1Service & Partial<Target2Service>
75
+ >(Target1Service).point.componentInstance;
70
76
 
71
77
  // Let's assert that service has a flag from Target2Service.
72
78
  expect(service.flag).toBeTruthy();
@@ -1,6 +1,10 @@
1
1
  import { Injectable, NgModule } from '@angular/core';
2
- import { TestBed } from '@angular/core/testing';
3
- import { MockBuilder, MockInstance, MockReset } from 'ng-mocks';
2
+ import {
3
+ MockBuilder,
4
+ MockInstance,
5
+ MockRender,
6
+ MockReset,
7
+ } from 'ng-mocks';
4
8
 
5
9
  // A service we want to use.
6
10
  @Injectable()
@@ -53,7 +57,9 @@ describe('TestProviderWithUseExisting', () => {
53
57
  afterAll(MockReset);
54
58
 
55
59
  it('creates TargetService', () => {
56
- const service = TestBed.get(TargetService);
60
+ const service = MockRender<
61
+ TargetService & Partial<{ name: string }>
62
+ >(TargetService).point.componentInstance;
57
63
 
58
64
  // Because Service2 has been replaced with a mock copy,
59
65
  // we are getting here a mock copy of Service2 instead of Service1.
@@ -1,6 +1,5 @@
1
1
  import { Injectable, NgModule } from '@angular/core';
2
- import { TestBed } from '@angular/core/testing';
3
- import { MockBuilder, MockInstance } from 'ng-mocks';
2
+ import { MockBuilder, MockInstance, MockRender } from 'ng-mocks';
4
3
 
5
4
  // Dependency 1.
6
5
  @Injectable()
@@ -44,7 +43,7 @@ describe('TestProviderWithUseFactory', () => {
44
43
  });
45
44
 
46
45
  it('creates TargetService', () => {
47
- const service = TestBed.get(TargetService);
46
+ const service = MockRender(TargetService).point.componentInstance;
48
47
 
49
48
  // Because Service1 has been replaced with a mock copy, we should get mock1 here.
50
49
  expect(service.service.name).toEqual('mock1');
@@ -1,6 +1,5 @@
1
1
  import { Injectable, NgModule } from '@angular/core';
2
- import { TestBed } from '@angular/core/testing';
3
- import { MockBuilder } from 'ng-mocks';
2
+ import { MockBuilder, MockRender } from 'ng-mocks';
4
3
 
5
4
  // A simple service, it might have contained more logic,
6
5
  // but it is redundant for the test demonstration.
@@ -31,10 +30,11 @@ describe('TestProviderWithUseValue', () => {
31
30
  beforeEach(() => MockBuilder(TargetService, TargetModule));
32
31
 
33
32
  it('creates TargetService', () => {
34
- const service = TestBed.get(TargetService);
33
+ const service = MockRender<TargetService>(TargetService).point
34
+ .componentInstance;
35
35
 
36
36
  // Let's assert received data.
37
- expect(service).toEqual({
37
+ expect(service as any).toEqual({
38
38
  service: null,
39
39
  });
40
40
  });
@@ -1,6 +1,6 @@
1
1
  import { Location } from '@angular/common';
2
2
  import { Component, NgModule } from '@angular/core';
3
- import { fakeAsync, TestBed, tick } from '@angular/core/testing';
3
+ import { fakeAsync, tick } from '@angular/core/testing';
4
4
  import { Router, RouterModule, RouterOutlet } from '@angular/router';
5
5
  import { RouterTestingModule } from '@angular/router/testing';
6
6
  import { MockBuilder, MockRender, ngMocks } from 'ng-mocks';
@@ -66,8 +66,8 @@ describe('TestRoute:Route', () => {
66
66
 
67
67
  it('renders /1 with Target1Component', fakeAsync(() => {
68
68
  const fixture = MockRender(RouterOutlet);
69
- const router: Router = TestBed.get(Router);
70
- const location: Location = TestBed.get(Location);
69
+ const router: Router = fixture.point.injector.get(Router);
70
+ const location: Location = fixture.point.injector.get(Location);
71
71
 
72
72
  // First we need to initialize navigation.
73
73
  location.go('/1');
@@ -83,8 +83,8 @@ describe('TestRoute:Route', () => {
83
83
 
84
84
  it('renders /2 with Target2Component', fakeAsync(() => {
85
85
  const fixture = MockRender(RouterOutlet);
86
- const router: Router = TestBed.get(Router);
87
- const location: Location = TestBed.get(Location);
86
+ const router: Router = fixture.point.injector.get(Router);
87
+ const location: Location = fixture.point.injector.get(Location);
88
88
 
89
89
  // First we need to initialize navigation.
90
90
  location.go('/2');
@@ -117,8 +117,8 @@ describe('TestRoute:Component', () => {
117
117
 
118
118
  it('navigates between pages', fakeAsync(() => {
119
119
  const fixture = MockRender(TargetComponent);
120
- const router: Router = TestBed.get(Router);
121
- const location: Location = TestBed.get(Location);
120
+ const router: Router = fixture.point.injector.get(Router);
121
+ const location: Location = fixture.point.injector.get(Location);
122
122
 
123
123
  // First we need to initialize navigation.
124
124
  if (fixture.ngZone) {
@@ -5,7 +5,7 @@ import {
5
5
  NgModule,
6
6
  VERSION,
7
7
  } from '@angular/core';
8
- import { fakeAsync, TestBed, tick } from '@angular/core/testing';
8
+ import { fakeAsync, tick } from '@angular/core/testing';
9
9
  import {
10
10
  CanActivate,
11
11
  Router,
@@ -129,8 +129,8 @@ describe('TestRoutingGuard', () => {
129
129
  }
130
130
 
131
131
  const fixture = MockRender(RouterOutlet);
132
- const router: Router = TestBed.get(Router);
133
- const location: Location = TestBed.get(Location);
132
+ const router: Router = fixture.point.injector.get(Router);
133
+ const location: Location = fixture.point.injector.get(Location);
134
134
 
135
135
  // First we need to initialize navigation.
136
136
  if (fixture.ngZone) {
@@ -146,9 +146,11 @@ describe('TestRoutingGuard', () => {
146
146
 
147
147
  it('loads dashboard', fakeAsync(() => {
148
148
  const fixture = MockRender(RouterOutlet);
149
- const router: Router = TestBed.get(Router);
150
- const location: Location = TestBed.get(Location);
151
- const loginService: LoginService = TestBed.get(LoginService);
149
+ const router: Router = fixture.point.injector.get(Router);
150
+ const location: Location = fixture.point.injector.get(Location);
151
+ const loginService: LoginService = fixture.point.injector.get(
152
+ LoginService,
153
+ );
152
154
 
153
155
  // Letting the guard know we have been logged in.
154
156
  loginService.isLoggedIn = true;
@@ -1,6 +1,6 @@
1
1
  import { Location } from '@angular/common';
2
2
  import { Component, Injectable, NgModule } from '@angular/core';
3
- import { fakeAsync, TestBed, tick } from '@angular/core/testing';
3
+ import { fakeAsync, tick } from '@angular/core/testing';
4
4
  import {
5
5
  ActivatedRoute,
6
6
  Resolve,
@@ -91,9 +91,11 @@ describe('TestRoutingResolver', () => {
91
91
  // It is important to run routing tests in fakeAsync.
92
92
  it('provides data to on the route', fakeAsync(() => {
93
93
  const fixture = MockRender(RouterOutlet);
94
- const router: Router = TestBed.get(Router);
95
- const location: Location = TestBed.get(Location);
96
- const dataService: DataService = TestBed.get(DataService);
94
+ const router: Router = fixture.point.injector.get(Router);
95
+ const location: Location = fixture.point.injector.get(Location);
96
+ const dataService: DataService = fixture.point.injector.get(
97
+ DataService,
98
+ );
97
99
 
98
100
  // DataService has been replaced with a mock copy,
99
101
  // let's set a custom value we will assert later on.
@@ -1,6 +1,5 @@
1
1
  import { Injectable, InjectionToken, NgModule } from '@angular/core';
2
- import { TestBed } from '@angular/core/testing';
3
- import { MockBuilder, ngMocks } from 'ng-mocks';
2
+ import { MockBuilder, MockRender, ngMocks } from 'ng-mocks';
4
3
 
5
4
  const TOKEN_CLASS = new InjectionToken('CLASS');
6
5
  const TOKEN_EXISTING = new InjectionToken('EXISTING');
@@ -57,7 +56,8 @@ describe('TestToken', () => {
57
56
  });
58
57
 
59
58
  it('creates TOKEN_CLASS', () => {
60
- const token = TestBed.get(TOKEN_CLASS);
59
+ const token = MockRender<ServiceClass>(TOKEN_CLASS).point
60
+ .componentInstance;
61
61
 
62
62
  // Verifying that the token is an instance of ServiceClass.
63
63
  expect(token).toEqual(jasmine.any(ServiceClass));
@@ -65,7 +65,8 @@ describe('TestToken', () => {
65
65
  });
66
66
 
67
67
  it('creates TOKEN_EXISTING', () => {
68
- const token = TestBed.get(TOKEN_EXISTING);
68
+ const token = MockRender<ServiceExisting>(TOKEN_EXISTING).point
69
+ .componentInstance;
69
70
 
70
71
  // Verifying that the token is an instance of ServiceExisting.
71
72
  // But because it has been replaced with a mock copy,
@@ -75,14 +76,14 @@ describe('TestToken', () => {
75
76
  });
76
77
 
77
78
  it('creates TOKEN_FACTORY', () => {
78
- const token = TestBed.get(TOKEN_FACTORY);
79
+ const token = MockRender(TOKEN_FACTORY).point.componentInstance;
79
80
 
80
81
  // Checking that we have here what factory has been created.
81
82
  expect(token).toEqual('FACTORY');
82
83
  });
83
84
 
84
85
  it('creates TOKEN_VALUE', () => {
85
- const token = TestBed.get(TOKEN_VALUE);
86
+ const token = MockRender(TOKEN_VALUE).point.componentInstance;
86
87
 
87
88
  // Checking the set value.
88
89
  expect(token).toEqual('VALUE');
@@ -24,7 +24,7 @@ import { staticFalse } from '../../tests';
24
24
  class TranslatePipe implements PipeTransform {
25
25
  public transform(value: string): string {
26
26
  // Just for the test purpose
27
- // we don't use any translation services.
27
+ // we do not use any translation services.
28
28
  return `translated:${value}`;
29
29
  }
30
30
  }
@@ -144,7 +144,7 @@ describe('main', () => {
144
144
  // ));
145
145
  // return testBed.compileComponents();
146
146
  // But in this case TranslatePipe will return undefined,
147
- // if we don't customize it via MockInstance or defaultMock.
147
+ // if we do not customize it via MockInstance or defaultMock.
148
148
  });
149
149
 
150
150
  it('asserts behavior of AppComponent', () => {