ich diesen Dienst haben muss ich Test:Wie MockBackend in Angular2 verwenden
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
@Injectable()
export class LoginService {
private baseUrl: string = 'http://localhost:4000/';
constructor (private http: Http) {}
public getBaseUrl() {
return this.baseUrl;
}
getLogin() {
return this.http.get(this.baseUrl + 'api/auth/octopus')
.map(res => res.json().redirect);
}
}
die getlogin() Funktion testen Ich habe diesen Code:
import {
async,
describe,
it,
expect,
beforeEach,
addProviders,
inject
} from '@angular/core/testing';
import { provide} from '@angular/core';
import { LoginService } from './login.service';
import {
Http,
BaseRequestOptions,
} from '@angular/http';
import {MockBackend} from '@angular/http/testing';
describe('Service: LoginService',() => {
beforeEach(() => addProviders([
LoginService,
BaseRequestOptions,
MockBackend,
provide(Http, {
useFactory: (backend: MockBackend, defaultOptions: BaseRequestOptions) => {
return new Http(backend, defaultOptions);
},
deps: [MockBackend, BaseRequestOptions]
})
]));
it('should return data.',
async(inject([LoginService], (loginService: LoginService) => {
loginService.getLogin().subscribe(
data => console.log(data)
);
})
));
});
jedoch die Daten doesn‘ Ich werde nicht eingeloggt. Ich habe verschiedene Lösungen ausprobiert, die ich auf SO oder im Internet gefunden habe.
Einer von ihnen war, einen HTTP-Aufruf an das Mockbackend zu machen, aber das gab mir nur Daten = undefiniert.
dies gibt mir: Unerwarteter token y in JSON an Position 0 –
ok, ändere einfach '' youData'' string in einen json, syth li ke, dass: '{'Redirect': 'eine Zeichenfolge'}' –
es funktioniert, danke! –