【发布时间】:2018-02-15 15:43:15
【问题描述】:
我正在尝试在 Angular 4 单元测试中取得成功,但我收到了不同的错误,我收到了错误 Failed: Cannot read property 'map' of undefined。
我仅在服务文件上使用 .map(),但我不知道为什么会显示此错误
我想知道如何才能成功通过此测试,如果我走对了路?
看看我的代码:
我的规格
import { TestBed, async, inject } from '@angular/core/testing';
import { HttpModule } from '@angular/http';
import { of } from 'rxjs/observable/of';
import { fileX } from '../../../models/fileX';
import { fileXService } from '../../../services/fileX.service';
import { fileYfileXComponent } from './fileY-fileX.component';
import { dataService } from '../../../services/data.service';
import { ComponentFixture } from '@angular/core/testing';
describe('fileYfileXComponent', () => {
let fileXService;
let myComponent;
let fixture: any;
let element;
let mockHttp: httpClient;
beforeEach(async(() => {
mockHttp = jasmine.createSpyObj('http', ['get']);
TestBed.configureTestingModule({
declarations: [fileYfileXComponent],
providers: [
fileXService,
dataService,
{ provide: Http, useValue: mockHttp }
],
imports: [HttpModule]
}).compileComponents();
}));
beforeEach(inject([fileXService], s => {
fileXService = s;
fixture = TestBed.createComponent(fileYfileXComponent);
myComponent = fixture.componentInstance;
element = fixture.nativeElement;
}));
it(
'should get values',
async(() => {
const response: fileX[] = [];
spyOn(fileXService, 'method1').and.returnValue(of(response));
myComponent.searchdatafileX();
fixture.detectChanges();
expect(myComponent.datafileX).toEqual(response);
})
);
});
【问题讨论】:
-
你在嘲笑http服务吗?还是在测试中实际向您的服务器发送请求?
标签: javascript angular unit-testing