2016-08-13 29 views
0

我正在使用這個種子項目:https://github.com/juliemr/ng2-test-seed,最近更新爲角度RC5。在角度2單元測試上使用Http

我想使用在單元測試的HTTP組件所以我做了以下:

在我的package.json添加到依賴關係:

"@angular/http": "2.0.0-rc.5", 

在SRC /測試/用戶service_test.ts我添加:

import { HttpModule, Http } from '@angular/http'; 

和修改beforeEach功能包括HTTP模塊:

beforeEach(() => { 
    TestBed.configureTestingModule({ 
     providers: [LoginService, UserService, HttpModule] 
    }); 
    }); 

現在,只要我想補充的HttpModule在beforeEach功能,並嘗試執行測試,我得到這個錯誤:在「它」功能

13 08 2016 09:13:27.609:WARN [web-server]: 404: /base/node_modules/@angular/http 
Missing error handler on `socket`. 
TypeError: (msg || "").replace is not a function 
    at /home/david/Workspace/ng2-seed/node_modules/karma/lib/reporter.js:45:23 
    at onBrowserError (/home/david/Workspace/ng2-seed/node_modules/karma/lib/reporters/base.js:58:60) 
    at null.<anonymous> (/home/david/Workspace/ng2-seed/node_modules/karma/lib/events.js:13:22) 
    at emitTwo (events.js:87:13) 
    at emit (events.js:172:7) 
    at onKarmaError (/home/david/Workspace/ng2-seed/node_modules/karma/lib/browser.js:95:13) 
    at Socket.<anonymous> (/home/david/Workspace/ng2-seed/node_modules/karma/lib/events.js:13:22) 
    at emitOne (events.js:82:20) 
    at Socket.emit (events.js:169:7) 
    at Socket.onevent (/home/david/Workspace/ng2-seed/node_modules/socket.io/lib/socket.js:335:8) 
    at Socket.onpacket (/home/david/Workspace/ng2-seed/node_modules/socket.io/lib/socket.js:295:12) 
    at Client.ondecoded (/home/david/Workspace/ng2-seed/node_modules/socket.io/lib/client.js:193:14) 
    at Decoder.Emitter.emit (/home/david/Workspace/ng2-seed/node_modules/component-emitter/index.js:134:20) 
    at Decoder.add (/home/david/Workspace/ng2-seed/node_modules/socket.io-parser/index.js:247:12) 
    at Client.ondata (/home/david/Workspace/ng2-seed/node_modules/socket.io/lib/client.js:175:18) 
    at emitOne (events.js:77:13) 

我仍然不使用HTTP組件,有人知道如何在Rc5上使用Http進行單元測試嗎?我需要達到我的服務器服務。

+1

'HttpModule'是一個模塊,而不是一個提供者,它不應該被放置在'providers'。你嘗試過'進口:[HttpModule],供應商:...'? – estus

+0

@estus你的建議似乎是正確的,你可以添加作爲答案,幷包括必要的導入聲明。 – kendaleiv

+0

@kendaleiv當然。 – estus

回答

1

TestBed.configureTestingModule需要模塊定義對象作爲參數。 According to the manual,導入模塊被列爲imports屬性,它應該是

TestBed.configureTestingModule({ 
    imports: [HttpModule], 
    providers: [LoginService, UserService] 
}); 
+0

您的解決方案是正確的,但在karma-test-shim.js中也需要包含'@ angular/http':{ main:'index.js', defaultExtension:'js' } – david