2016-10-17 14 views
3

カルマで簡単なテストを実行し、TestBed.createComponent()関数内で私のテストクラッシュをブラウジングするとき。angle2とジャスミンでテストを実行しているときにTestBed.createComponentのプロパティ 'injector'を読み取れません

import { ComponentFixture, TestBed } from '@angular/core/testing'; 
import { By }    from '@angular/platform-browser'; 
import { DebugElement } from '@angular/core'; 
import { AboutPage } from './about' 


beforeEach(() => { 

    // refine the test module by declaring the test component 
    TestBed.configureTestingModule({ 
     declarations: [ AboutPage ], 
    }); 

    // create component and test fixture 
    fixture = TestBed.createComponent(AboutPage); 

    // get test component from the fixture 
    comp = fixture.componentInstance; 
    }); 

、エラーが受け取ら:ここ

がクラッシュしbeforeEachがある

Chrome 53.0.2785 (Mac OS X 10.11.6) About component should display original title FAILED 
    TypeError: Cannot read property 'injector' of null 
     at TestBed._createCompilerAndModule (/var/folders/by/05whlcq9247dyx85bd0l183w0000gn/T/node_modules/@angular/core/bundles/core-testing.umd.js:834:0 <- /var/folders/by/05whlcq9247dyx85bd0l183w0000gn/T/57bca79162ed1bcbdc3d746a5d9211d7.browserify:3968:48) 
     at TestBed._initIfNeeded (/var/folders/by/05whlcq9247dyx85bd0l183w0000gn/T/node_modules/@angular/core/bundles/core-testing.umd.js:800:0 <- /var/folders/by/05whlcq9247dyx85bd0l183w0000gn/T/57bca79162ed1bcbdc3d746a5d9211d7.browserify:3934:43) 
     at TestBed.createComponent (/var/folders/by/05whlcq9247dyx85bd0l183w0000gn/T/node_modules/@angular/core/bundles/core-testing.umd.js:884:0 <- /var/folders/by/05whlcq9247dyx85bd0l183w0000gn/T/57bca79162ed1bcbdc3d746a5d9211d7.browserify:4018:18) 
     at Function.TestBed.createComponent (/var/folders/by/05whlcq9247dyx85bd0l183w0000gn/T/node_modules/@angular/core/bundles/core-testing.umd.js:714:0 <- /var/folders/by/05whlcq9247dyx85bd0l183w0000gn/T/57bca79162ed1bcbdc3d746a5d9211d7.browserify:3848:33) 
     at Object.<anonymous> (/var/folders/by/05whlcq9247dyx85bd0l183w0000gn/T/src/pages/about/about.spec.ts:24:22 <- /var/folders/by/05whlcq9247dyx85bd0l183w0000gn/T/57bca79162ed1bcbdc3d746a5d9211d7.browserify:50004:37) 
     at ZoneDelegate.invoke (node_modules/zone.js/dist/zone.js:203:28) 
     at ProxyZoneSpec.onInvoke (node_modules/zone.js/dist/proxy.js:72:39) 
     at ZoneDelegate.invoke (node_modules/zone.js/dist/zone.js:202:34) 
     at Zone.run (node_modules/zone.js/dist/zone.js:96:43) 
     at Object.<anonymous> (node_modules/zone.js/dist/jasmine-patch.js:91:50) 
    TypeError: Cannot read property 'detectChanges' of undefined 
     at Object.<anonymous> (/var/folders/by/05whlcq9247dyx85bd0l183w0000gn/T/src/pages/about/about.spec.ts:33:12 <- /var/folders/by/05whlcq9247dyx85bd0l183w0000gn/T/57bca79162ed1bcbdc3d746a5d9211d7.browserify:50010:16) 
     at ZoneDelegate.invoke (node_modules/zone.js/dist/zone.js:203:28) 
     at ProxyZoneSpec.onInvoke (node_modules/zone.js/dist/proxy.js:72:39) 
     at ZoneDelegate.invoke (node_modules/zone.js/dist/zone.js:202:34) 
     at Zone.run (node_modules/zone.js/dist/zone.js:96:43) 
     at Object.<anonymous> (node_modules/zone.js/dist/jasmine-patch.js:91:50) 
     at ZoneQueueRunner.jasmine.QueueRunner.ZoneQueueRunner.execute (node_modules/zone.js/dist/jasmine-patch.js:119:42) 

そして、ここではコードです。

import { Component } from '@angular/core'; 

import { NavController } from 'ionic-angular'; 

@Component({ 
    selector: 'page-about', 
    templateUrl: 'about.html' 
}) 
export class AboutPage { 

    helloText: string; 

    constructor(public navCtrl: NavController) { 

    } 

    sayHello(){ 
    this.helloText = "hello"; 
    } 
} 

助けてください。

  • オペレーティングシステム: OSX 10.11.6
  • 角度バージョン:2.0.1 "zone.js": "^ 0.6.21" は "browserify": "13.1.0"

  • ノード:node --version = v6.7.0

+0

'AboutPage'は、HTMLとCSSを持っている場合、あなたは1を作成しようとする前に、' TestBed.compileComponents'を解決しようとしたがありますか? – jonrsharpe

+0

@jonrsharpeはい、セレクタとtemplateUrlを持つ通常のangular2コンポーネントです(質問にコードを追加します)。 'TestBed.compileComponents? 'を再作成することはどういう意味ですか? – jordins

+0

私はそのメソッドを呼び出して、それが返す約束を解決することを意味します(' TestBed.compileComponents()。then(...) ')。例えば、 https://github.com/textbook/known-for-web/blob/master/src/app/actor/actor.component.spec.ts#L54 – jonrsharpe

答えて

4

私はあなたがプラットフォームを初期化するのを忘れ推測:

import { 
    BrowserDynamicTestingModule, 
    platformBrowserDynamicTesting 
} 
from '@angular/platform-browser-dynamic/testing'; 

TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting()); 

も参照してくださいPlunker Example

+1

はい、うまくいきました!ありがとう! – jordins

+0

これを追加すると、次のエラーが表示されます。Uncaught TypeError:未定義の 'prototype'プロパティを読み取れません。 MockDirectiveResolverで__extendsから来ています。 – eric

関連する問題