Every test now has an implicit module. It can be configured via `configureModule` (from @angular/core/testing)
to add providers, directives, pipes, ...
The compiler now has to be configured separately via `configureCompiler` (from @angular/core/testing)
to add providers or define whether to use jit.
BREAKING CHANGE:
- Application providers can no longer inject compiler internals (i.e. everything
  from `@angular/compiler). Inject `Compiler` instead. This reflects the
  changes to `bootstrap` for module support (3f55aa609f60f130f1d69188ed057214b1267cb3).
- Compiler providers can no longer be added via `addProviders` / `withProviders`.
  Use the new method `configureCompiler` instead.
- Platform directives / pipes need to be provided via
  `configureModule` and can no longer be provided via the
  `PLATFORM_PIPES` / `PLATFORM_DIRECTIVES` tokens.
- `setBaseTestProviders()` was renamed into `initTestEnvironment` and 
  now takes a `PlatformRef` and a factory for a
  `Compiler`.
- E.g. for the browser platform:
  
  BEFORE:
  ```
  import {setBaseTestProviders} from ‘@angular/core/testing’;
  import {TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS,
      TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS} from ‘@angular/platform-browser-dynamic/testing’;
  
  setBaseTestProviders(TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS,
      TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS);   
  ```
  AFTER:
  ```
  import {setBaseTestProviders} from ‘@angular/core/testing’;
  import {browserTestCompiler, browserDynamicTestPlatform,
      BrowserDynamicTestModule} from ‘@angular/platform-browser-dynamic/testing’;
  
  initTestEnvironment(
      browserTestCompiler,
      browserDynamicTestPlatform(),
      BrowserDynamicTestModule);
  ```
- E.g. for the server platform:
  
  BEFORE:
  ```
  import {setBaseTestProviders} from ‘@angular/core/testing’;
  import {TEST_SERVER_PLATFORM_PROVIDERS,
      TEST_SERVER_APPLICATION_PROVIDERS} from ‘@angular/platform-server/testing/server’;
  
  setBaseTestProviders(TEST_SERVER_PLATFORM_PROVIDERS,
      TEST_SERVER_APPLICATION_PROVIDERS);   
  ```
  AFTER:
  ```
  import {setBaseTestProviders} from ‘@angular/core/testing’;
  import {serverTestCompiler, serverTestPlatform,
      ServerTestModule} from ‘@angular/platform-browser-dynamic/testing’;
  
  initTestEnvironment(
      serverTestCompiler,
      serverTestPlatform(),
      ServerTestModule);
  ```
Related to #9726
Closes #9846
		
	
			
		
			
				
	
	
		
			87 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*global jasmine, __karma__, window*/
 | |
| Error.stackTraceLimit = 5;
 | |
| jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
 | |
| 
 | |
| __karma__.loaded = function () {
 | |
| };
 | |
| 
 | |
| function isJsFile(path) {
 | |
|   return path.slice(-3) == '.js';
 | |
| }
 | |
| 
 | |
| function isSpecFile(path) {
 | |
|   return path.slice(-7) == 'spec.js';
 | |
| }
 | |
| 
 | |
| function isBuiltFile(path) {
 | |
|   var builtPath = '/base/dist/';
 | |
|   return isJsFile(path) && (path.substr(0, builtPath.length) == builtPath);
 | |
| }
 | |
| 
 | |
| var allSpecFiles = Object.keys(window.__karma__.files)
 | |
|   .filter(isSpecFile)
 | |
|   .filter(isBuiltFile);
 | |
| 
 | |
| // Load our SystemJS configuration.
 | |
| System.config({
 | |
|   baseURL: '/base'
 | |
| });
 | |
| 
 | |
| System.config(
 | |
|   {
 | |
|     map: {
 | |
|       'rxjs': 'node_modules/rxjs',
 | |
|       '@angular': 'dist/all/@angular'
 | |
|     },
 | |
|     packages: {
 | |
|       '@angular/core': {
 | |
|         main: 'index.js',
 | |
|         defaultExtension: 'js'
 | |
|       },
 | |
|       '@angular/compiler': {
 | |
|         main: 'index.js',
 | |
|         defaultExtension: 'js'
 | |
|       },
 | |
|       '@angular/common': {
 | |
|         main: 'index.js',
 | |
|         defaultExtension: 'js'
 | |
|       },
 | |
|       '@angular/platform-browser': {
 | |
|         main: 'index.js',
 | |
|         defaultExtension: 'js'
 | |
|       },
 | |
|       '@angular/platform-browser-dynamic': {
 | |
|         main: 'index.js',
 | |
|         defaultExtension: 'js'
 | |
|       },
 | |
|       '@angular/router': {
 | |
|         main: 'index.js',
 | |
|         defaultExtension: 'js'
 | |
|       },
 | |
|       'rxjs': {
 | |
|         main: 'Rx.js',
 | |
|         defaultExtension: 'js'
 | |
|       }
 | |
|     }
 | |
|   });
 | |
| 
 | |
| Promise.all([
 | |
|   System.import('@angular/core/testing'),
 | |
|   System.import('@angular/platform-browser-dynamic/testing')
 | |
| ]).then(function (providers) {
 | |
|   var testing = providers[0];
 | |
|   var testingBrowser = providers[1];
 | |
| 
 | |
|   testing.initTestEnvironment(
 | |
|     testingBrowser.browserTestCompiler,
 | |
|     testingBrowser.browserDynamicTestPlatform(),
 | |
|     testingBrowser.BrowserDynamicTestModule);
 | |
| 
 | |
| }).then(function() {
 | |
|   // Finally, load all spec files.
 | |
|   // This will run the tests directly.
 | |
|   return Promise.all(
 | |
|     allSpecFiles.map(function (moduleName) {
 | |
|       return System.import(moduleName);
 | |
|     }));
 | |
| }).then(__karma__.start, __karma__.error); |