2017-02-07 119 views
1

我正在寫角2應用程序。此檢測可通過角CLI創建並由默認失敗:如何解決未定義不是一個對象(評估'newOptions.merge')?

it('should render title in a h1 tag', async(() => { 
    let fixture = TestBed.createComponent(AppComponent); 
    fixture.detectChanges(); 
    let compiled = fixture.debugElement.nativeElement; 
    expect(compiled.querySelector('h1').textContent).toContain('app works!'); 
    })); 

錯誤信息是:

失敗:錯誤./AppComponent類AppComponent - 聯模板:51:14所造成的:未定義是不是對象(評估'newOptions.merge') mergeOptions @ webpack:///~/@angular/http/src/http.js:47:0 < - src/test.ts:69434:22 get @ webpack :///~/@angular/http/src/http.js:147:0 < - src/test.ts:69534:110

因爲我發現newOptions.merge被稱爲mergeOptions方法node_modules/@angular/http/src/http.js

爲了讓測試通過我需要做些什麼?

這裏是gist fro app.component.ts
她是gist for app.component.html

+0

請發佈您的AppComponent的內容。爲了能夠說明爲什麼這個測試失敗,我們需要看到它 –

+0

@JesseCarter,最後我在問題文本中添加了要點。 – gandra404

+0

你還可以發佈組件的HTML嗎? –

回答

1

您正在使用角2 HTTP服務,所以你需要注入defaultOptions參數,這一點,在你的情況下,空的。使這項工作

最好的情況是在你的spec.ts文件中添加follwing線:

beforeEach(() => { 
     TestBed.configureTestingModule({ 
      providers: [ 
       { 
        provide: Http, 
        useFactory: (backend: ConnectionBackend, defaultOptions: BaseRequestOptions) => { 
         return new Http(backend, defaultOptions); 
        }, 
        deps : [BaseRequestOptions] 
       }, 
       { provide: BaseRequestOptions, useClass: BaseRequestOptions } 
      ] 
     }); 
}); 

所以,當你告訴提供商BaseRequestOption行使用類BaseRequestOptions是至關重要的。

+0

這並不能解決問題,還有什麼需要改變的? –

相關問題