gpt4 book ai didi

javascript - Angular2 单元测试 Http MockBackend 问题 - 无法在 mergeOptions 读取未定义的属性合并

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:27:51 26 4
gpt4 key购买 nike

Angular2 单元测试 Http MockBackend 问题 - 无法在 mergeOptions 读取未定义的属性合并。

我正在尝试为我的 http get promise 做一个基本的单元测试。

typescript 编译器工作正常。但是,当我使用 karma runner 运行 npm run test 时,出现以下错误。

这是我遇到的 gitbash 错误:无法读取 mergeOptions 处未定义的属性“合并”。

这是我的代码:

 import {Injectable} from 'angular2/angular2';
import {HTTP_PROVIDERS, Http, Headers} from 'angular2/http';

@Injectable()

export class FirebaseService{
headers: Headers;

constructor(public http?: Http) {
this.headers = new Headers();
this.headers.append('Content-Type', 'application/json');
}

public getSpotifyTracks = ():Promise<Object> =>{
return this.http
.get('https://api.spotify.com/v1/tracks/0eGsygTp906u18L0Oimnem', {headers:this.headers})
.map((response) => {
return response.json()
}).toPromise();
}
}

这是我的测试:

 import {beforeEach, ddescribe, describe, expect, iit, inject, it, xit, injectAsync, beforeEachProviders, fakeAsync, tick} from 'angular2/testing';
import {provide, Injector, bind} from 'angular2/angular2';
import {HTTP_PROVIDERS, Http, MockBackend, BaseRequestOptions} from 'angular2/http';

import {FirebaseService} from '../app/firebase-service';

describe('Spotify Service Calls', () => {
beforeEachProviders(() => [
MockBackend,
BaseRequestOptions,
provide(Http, {useFactory:
function(backend, defaultOptions) {
return new Http(backend, defaultOptions);
},
deps: [MockBackend]})
]);

//This test doesnt work??????????????
it('getting tracks', inject([Http], (http) => {
var firebaseService = new FirebaseService(http);
var response;

firebaseService.getSpotifyTracks().then((res) => {
response = res;
expect(response).not.toBe(null);
});
}));
});

最佳答案

我已经更新到 alpha.46,它破坏了很多东西。一件事是 http.get(...) 调用不再返回带有 .map 方法的 Observable。

看看是否用类似的东西替换 .map

return this.http
.get('https://api.spotify.com/v1/tracks/0eGsygTp906u18L0Oimnem', {headers:this.headers})
.subscribe((response) => {
return response.json()
}).toPromise();

这就是我所做的并且有效,但不确定这有多“正确”...

关于javascript - Angular2 单元测试 Http MockBackend 问题 - 无法在 mergeOptions 读取未定义的属性合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34180476/

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