jeudi 10 novembre 2016

Angular2 Testing: Unexpected value '[object Object]' declared by the module 'DynamicTestModule'

I'm trying to set up some tests for Validators in my component. But when I try to load a component inside a test, I get the following Error:

ERROR: Unexpected value '[object Object]' declared by the module 'DynamicTestModule' at http://localhost:9876/base/config/spec-bundle.js:52950:34

This is my spec file:

    import {TestBed, async, ComponentFixture} from "@angular/core/testing";
    import {PersDatenEditDetailsComponent} from "../PersDatenEditDetails.Component";
    import {LEVEL} from "../../../../apollo-logging/LogLevel";
    import LoggingModule from "../../../../apollo-logging/Logging.Module";
    import {isDevMode} from "@angular/core";


    describe('PersDatenEditName', () => {
      let comp: PersDatenEditDetailsComponent;
      let fixture: ComponentFixture<PersDatenEditDetailsComponent>;

      beforeEach(async(() => {
        TestBed.configureTestingModule({
          declarations: [PersDatenEditDetailsComponent, LoggingModule.forRoot({level: isDevMode() ? LEVEL.ALL : LEVEL.ERROR}),
          ]
        }).compileComponents();

        fixture = TestBed.createComponent(PersDatenEditDetailsComponent);
        comp = fixture.componentInstance;

      }));

The lines:

     fixture = TestBed.createComponent(PersDatenEditDetailsComponent);
        comp = fixture.componentInstance;

Are causing the Errors.

My spec-bundle.js looks like this:

Error.stackTraceLimit = Infinity;

require('core-js/es6');
require('core-js/es7/reflect');

// Typescript emit helpers polyfill
require('ts-helpers');

require('zone.js/dist/zone');
require('http://zone.js/dist/long-stack-trace-zone');
require('zone.js/dist/proxy'); // since zone.js 0.6.15
require('http://zone.js/dist/sync-test');
require('http://zone.js/dist/jasmine-patch'); // put here since zone.js 0.6.14
require('http://zone.js/dist/async-test');
require('http://zone.js/dist/fake-async-test');

// RxJS
require('rxjs/Rx');

var testing = require('@angular/core/testing');
var browser = require('@angular/platform-browser-dynamic/testing');

testing.TestBed.initTestEnvironment(
  browser.BrowserDynamicTestingModule,
  browser.platformBrowserDynamicTesting()
);


var testContext = require.context('../src', true, /\.spec\.ts/);


function requireAll(requireContext) {
  return requireContext.keys().map(requireContext);
}

var modules = requireAll(testContext);

This is my karma-config file:

var path = require('path');
var srcDir = path.normalize(__dirname + '/../');
var specBundle = path.normalize(srcDir + '/config/spec-bundle.js');

module.exports = function(config) {
  var testWebpackConfig = require('./webpack.test.js');

  var preProcessors = {};
  preProcessors[specBundle] = ['coverage', 'webpack', 'sourcemap'];

  config.set({

    basePath: '',

    /*
     * Frameworks to use
     *
     * available frameworks: https://npmjs.org/browse/keyword/karma-adapter
     */
    frameworks: ['jasmine'],

    exclude: [ ],


    files: [
      {
        pattern: path.normalize(srcDir + '/config/spec-bundle.js'),
        watched: false
      }
    ],


    preprocessors: preProcessors,

    webpack: testWebpackConfig,

    coverageReporter: {
      dir : 'coverage/',
      reporters: [
        { type: 'text-summary' },
        { type: 'lcov' }
      ]
    },

    // Webpack please don't spam the console when running in karma!
    webpackServer: { noInfo: true },

    reporters: [ 'mocha', 'coverage', 'junit' ],

    port: 9876,

    colors: true,


    logLevel: config.LOG_INFO,


    autoWatch: false,


    browsers: [
      'Chrome'
    ],


    singleRun: false
  });

};

Would be great if anyone could help me out.

1 commentaire: