Angular: TestComponentBuilder.createAsync() рдЕрдкрдиреЗ рд╡рд╛рджреЗ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 7 рдордИ 2016  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: angular/angular

рдПрдХ рдШрдЯрдХ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП MyComponent рдбреЗрдореЛ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдПрдкреАрдЖрдИ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛, рдФрд░ рдЙрди рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдЬреЛ рд╣рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдШрдЯрдХ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ:

import MyComponent from './my.component';
import {
  describe,
  expect,
  it,
  inject,
  beforeEach,
  beforeEachProviders } from '@angular/core/testing';
import { TestComponentBuilder } from '@angular/compiler/testing';

рдореИрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ MyComponent рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рд╕реНрдерд┐рд░рддрд╛ рдШрдЯрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП TestComponentBuilder рдЗрдВрдЬреЗрдХреНрд╢рди рд▓рдЧрд╛рдиреЗ рдФрд░ рддрддреНрдХрд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ:

describe('MyComponent', () => {
  let testComponentBuilder: TestComponentBuilder;

  beforeEachProviders(() => [TestComponentBuilder]);

  beforeEach(inject([TestComponentBuilder],  (_testComponentBuilder: TestComponentBuilder) => {
      testComponentBuilder = _testComponentBuilder;
    }
  ));

  it('should feature this or that behavior', done => {
    // We create a test component fixture on runtime out from the component symbol
    testComponentBuilder.createAsync(MyComponent).then(componentFixture => {

      // Here we proceed to run assertions on the componentFixture
      // ...

      done();
    })
    .catch(e => done.fail(e));
  });

рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ RC.1 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рд╣рдореЗрд╢рд╛ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред

Error: No precompiled component MyComponent found

рдореВрд▓ рд░реВрдк рд╕реЗ testComponentBuilder.createAsync(MyComponent) рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рд╡рд╛рджрд╛ рдХрднреА рд╣рд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред TestComponentBuilder рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдореЗрд░реЗ рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рдпрд╣ рдореБрджреНрджрд╛ рд╕реБрд╕рдВрдЧрдд рд╣реИред

рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП, рдФрд░ рдХреЛрдИ рднреА рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдкрд╣рд▓реЗ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реВрдВ:

import { setBaseTestProviders } from '@angular/core/testing';
import {
  TEST_BROWSER_STATIC_PLATFORM_PROVIDERS,
  TEST_BROWSER_STATIC_APPLICATION_PROVIDERS
} from '@angular/platform-browser/testing';

setBaseTestProviders(
  TEST_BROWSER_STATIC_PLATFORM_PROVIDERS,
  TEST_BROWSER_STATIC_APPLICATION_PROVIDERS
);

рдореИрдВрдиреЗ рдЧреАрд▓реЗрд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪ рдФрд░ рдирд┐рдореНрди рдХреЛрдб рд╕реНрдХреИрди рдХрд┐рдпрд╛ рд╣реИ рдпрд╣ рдЖрд░рд╕реА.1 рдореЗрдВ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмрдЧ рд╣реИ рдпрд╛ рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рд╕реЗрдЯрдЕрдк рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рд╕рдлрд▓рддрд╛ рдирд╣реАрдВ рд╣реИред RC.1 рд╕реЗ рдкрд╣рд▓реЗ, рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рд╕реЗрдЯрдЕрдк рдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рднреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░реАрдХреНрд╖рдг рдШрдЯрдХреЛрдВ рдореЗрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ред

рдХреЛрдИ рд╕рдВрдХреЗрдд?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдЖрдк рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореЗрд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░реАрдХреНрд╖рдг рдкреНрд░рджрд╛рддрд╛ рд╕реЗрдЯрдЕрдк рдЧрд▓рдд рдерд╛ред рд╕реЗрдЯрдЕрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рд╕реЗ рдЪрд╛рд▓ рдЪрд▓реА:

import { resetBaseTestProviders, setBaseTestProviders } from '@angular/core/testing';
import { BROWSER_APP_DYNAMIC_PROVIDERS } from "@angular/platform-browser-dynamic";
import {
  TEST_BROWSER_STATIC_PLATFORM_PROVIDERS,
  ADDITIONAL_TEST_BROWSER_PROVIDERS
} from '@angular/platform-browser/testing';

resetBaseTestProviders();
setBaseTestProviders(
  TEST_BROWSER_STATIC_PLATFORM_PROVIDERS,
  [
    BROWSER_APP_DYNAMIC_PROVIDERS,
    ADDITIONAL_TEST_BROWSER_PROVIDERS
  ]
);

рдореЗрд░рд╛ рдмреБрд░рд╛! ;)

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдЖрдк рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореЗрд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░реАрдХреНрд╖рдг рдкреНрд░рджрд╛рддрд╛ рд╕реЗрдЯрдЕрдк рдЧрд▓рдд рдерд╛ред рд╕реЗрдЯрдЕрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рд╕реЗ рдЪрд╛рд▓ рдЪрд▓реА:

import { resetBaseTestProviders, setBaseTestProviders } from '@angular/core/testing';
import { BROWSER_APP_DYNAMIC_PROVIDERS } from "@angular/platform-browser-dynamic";
import {
  TEST_BROWSER_STATIC_PLATFORM_PROVIDERS,
  ADDITIONAL_TEST_BROWSER_PROVIDERS
} from '@angular/platform-browser/testing';

resetBaseTestProviders();
setBaseTestProviders(
  TEST_BROWSER_STATIC_PLATFORM_PROVIDERS,
  [
    BROWSER_APP_DYNAMIC_PROVIDERS,
    ADDITIONAL_TEST_BROWSER_PROVIDERS
  ]
);

рдореЗрд░рд╛ рдмреБрд░рд╛! ;)

@deeleman рдореИрдВ рдЗрд╕реА рдореБрджреНрджреЗ w/ рдПрдирдЬреА-рдХреНрд▓реА рдФрд░ https://github.com/juliemr/ng2-test-seed/blob/master/karma-test-shim.js рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрдЕрдк рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВ: (

/*global jasmine, __karma__, window*/
Error.stackTraceLimit = Infinity;
jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000;

__karma__.loaded = function () {
};

var distPath = '/base/.test/';
var appPath = distPath + 'app/';

function isJsFile(path) {
  return path.slice(-3) == '.js';
}

function isSpecFile(path) {
  return path.slice(-8) == '.spec.js';
}

function isAppFile(path) {
  return isJsFile(path) && (path.substr(0, appPath.length) == appPath);
}

var allSpecFiles = Object.keys(window.__karma__.files)
  .filter(isSpecFile)
  .filter(isAppFile);

// Load our SystemJS configuration.
System.config({
  baseURL: distPath,
});


System.import('system.config.js').then(function(e) {
  // Load and configure the TestComponentBuilder.
  return 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.setBaseTestProviders(
      testingBrowser.TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS,
      testingBrowser.TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS
    );
  });
}).then(function() {
  return Promise.all(
    allSpecFiles.map(function (moduleName) {
      return System.import(moduleName);
    }));
}).then(__karma__.start, __karma__.error);

рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдХрд╛рд░рдг рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрдкрдиреЗ рдЖрдк рд▓реЙрдХ рд╣реЛ рдЧрдИ рд╣реИред
рдпрджрд┐ рдЖрдк рд╕рдорд╛рди рдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдХреГрдкрдпрд╛ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рджрд░реНрдЬ рдХрд░реЗрдВред

рд╣рдорд╛рд░реА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рд▓реЙрдХрд┐рдВрдЧ рдиреАрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВред

_рдпрд╣ рдХреНрд░рд┐рдпрд╛ рдХрд┐рд╕реА рдмреЙрдЯ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреА рдЧрдИ рд╣реИред_

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

alxhub picture alxhub  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pkozlowski-opensource picture pkozlowski-opensource  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jeffbcross picture jeffbcross  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

igorzg picture igorzg  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

escardin picture escardin  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ