gpt4 book ai didi

angular - Angular 真实后端测试服务

转载 作者:行者123 更新时间:2023-11-28 20:13:52 25 4
gpt4 key购买 nike

我想测试一个服务,它调用了一个真实的后端url,找不到解决方案。我的服务必须从服务器调用数据,我想确保数据到达服务并且服务正确处理它。

所以这只是我的登录服务的一个简单示例:

@Injectable()
export class LoginService {
/**
* The token, which will be stored on the localStorage.
*/
public token: string;
//Eventemitter, for updating the navigation, when the user logs in
@Output() loggedInEm:EventEmitter<any> = new EventEmitter();


constructor(private http: Http) {
// set token if saved in local storage
var currentUser = JSON.parse(localStorage.getItem('currentUser'));
this.token = currentUser && currentUser.token;
}

login(_mail, _pass): Observable<number> {
var headers = new Headers();
headers.append('Content-Type', 'application/json');
var data = {
mail: _mail,
pass: _pass
};
return this.http.post('/login', JSON.stringify(data), {
headers : headers
}).map((response: Response) => {
let res = response.json();
this.logged = res;
});
}

public loggedIn() : boolean {
return this.logged;
}

这就是我想要测试它的方式:

describe('Login Service', () => {

let loginService: LoginService;

beforeEach(() => {
TestBed.configureTestingModule({
declarations: [
],
providers: [
LoginService
],
imports: [
FormsModule,
IonicModule
],
});
inject([LoginService], (service) => {
loginService = service;
});
});


it("Should login user", () => {
loginService.login("mail@mail.ru", "123456");
let loggedIn = loginService.loggedIn();
expect(loggedIn).toBe(true);
});
});

但是我得到以下错误:类型错误:无法读取未定义的属性“登录”,因此服务必须未定义。我可以模拟该服务,但我想使用后端服务器上的真实数据库来处理它。

那么可能是什么问题,我该如何解决呢?

亲切的问候,

安德鲁

最佳答案

试试这个:

it("Should login user", () => {
loginService.login("mail@mail.ru", "123456").subscribe(value => {
let loggedIn = loginService.loggedIn();
expect(loggedIn).toBe(true);
done();
});
})

关于angular - Angular 真实后端测试服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46252236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com