2016-08-13 3 views
0

Ich verwende dieses Seed-Projekt: https://github.com/juliemr/ng2-test-seed, die vor kurzem auf RC5 von eckigen aktualisiert wurde.mit Http auf Winkel 2 Unit Tests

ich die Http-Komponente in Unit-Test verwendet werden soll, so habe ich folgendes:

In package.json ich Abhängigkeiten hinzugefügt:

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

In src/test/user-service_test.ts ich fügte hinzu:

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

und modifiziert, um die Funktion beforeHttpModule umfassen:

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

Nun, sobald ich die Httpmodule in der Funktion hinzufügen before und versuchen, den Test, den ich diesen Fehler bekam auszuführen:

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) 

Ich bin immer noch nicht die Http-Komponente in einem „it“ -Funktion , weiß jemand, wie man Http auf einem Komponententest auf Rc5 benutzt? Ich muss meine Serverdienste erreichen.

+1

sein 'HttpModule' ein Modul ist, kein Anbieter, sollte es nicht in' providers' platziert werden. Hast du 'Importe: [HttpModule], Provider: ...' versucht? – estus

+0

@estus Ihr Vorschlag scheint korrekt zu sein, Sie könnten das als Antwort hinzufügen und auch die notwendige Import-Anweisung einfügen. – kendaleiv

+0

@kendaleiv Sicher. – estus

Antwort

1

TestBed.configureTestingModule erwartet das Moduldefinitionsobjekt als Argument. According to the manual, importierte Module als imports Eigenschaft aufgeführt sind, sollte es

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

Ihre Lösung ist korrekt, aber es wurde auch in karma-test-shim.js benötigt, um '@ angular/http' einzuschließen: { main: 'index.js', defaultExtension: 'js' } – david