私は角4を学んでいます。私のアプリの仕事はうまくいますが、私はUnitTestにコンポーネントを知りたいと思います。未定義のプロパティ ''を読み取ることができません角度4ユニットテスト
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import {CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA } from '@angular/core';
import { Http,ConnectionBackend,BaseRequestOptions } from '@angular/http';
import {MockBackend} from '@angular/http/testing';
import {DxSchedulerModule, DxCheckBoxModule, DxSelectBoxModule} from 'devextreme-angular';
import { CalendrierComponent } from './calendrier.component';
import {CalendrierModule} from './calendrier.module';
import {Person} from '../models/persons.model'
import {PersonsService} from '../services/persons.services'
import {Appointment} from '../models/appointment.model'
import {AppointmentService} from '../services/appointment.service'
describe('CalendrierComponent',() => {
let component: CalendrierComponent;
let fixture: ComponentFixture<CalendrierComponent>;
let personService:PersonsService;
let appointmentService:AppointmentService;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ CalendrierComponent],
imports:[DxSchedulerModule, DxCheckBoxModule, DxSelectBoxModule],
providers: [AppointmentService,
PersonsService,
MockBackend,
BaseRequestOptions,
{ provide: Http,
useFactory: (backend: ConnectionBackend,
defaultOptions: BaseRequestOptions) => {
return new Http(backend, defaultOptions);
}, deps: [MockBackend, BaseRequestOptions] },
],
schemas:[NO_ERRORS_SCHEMA]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(CalendrierComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should be created',() => {
expect(component).toBeTruthy();
});
it('should have a defined component',() => {
expect(component).toBeDefined();
});
it('add30mnto should return an hour with 30min more',() => {
expect(appointmentService.add30mnTo('2017-08-16T12:30:00.000Z')).toEqual('2017-08-16T13:00:00.000Z');
});
、ここでは、私がテストしたいサービスがある::私が何をやったかここだ
import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import 'rxjs/add/operator/toPromise';
import 'rxjs/add/operator/map';
import {Observable} from 'rxjs/Rx';
import { Appointment } from '../models/appointment.model';
import {PersonsService} from './persons.services'
@Injectable()
export class AppointmentService {
private AppointmentUrlGet = 'http://localhost/v0/croissants';
private AppointmentUrlWrite = 'http://localhost/v0/croissant';
public handleError(error: any): Promise<any> {
console.error('An error occurred', error); // for demo purposes only
return Promise.reject(error.message || error);
}
constructor(private http: Http, private personsService: PersonsService) {}
add30mnTo(date : string){
var initialdate = (this.datetotimestamp(date) + 1800) * 1000;
var dateinit = new Date (initialdate)
var result = dateinit.toISOString();
return result;
}
.
.
.
.
}
(例えばConnectionBackend)多くの問題を持った後、私はこのエラーがありますすることはできません未定義の 'add30mnTo'プロパティを読み込みます。誰もが私が間違っていたきたかのアイデアを持っていました... Jasmine angular unit test 'Cannot read 'property' of undefined Angular 2 Unit Testing - Cannot read property 'root' of undefined
が、解決策は、私のために動作しません。論文:
は、私はすでに、これらのトピックをチェックしましたか?ありがとう!!
それは '(appointmentService.add30mnTo( '2017-08-16T12:30:00.000Z'))期待して、このラインから来るかもしれtoEqual( '2017。 -08-16T13:00:00.000Z '); }); 'それは' appointmentService'が定義されていないことを意味します – Nolyurn
これは私の考えでありましたが、私の仕様ではapointmentServiceを定義しています... import {AppointmentService} '../services/appointment.service'この行に「let appointmentService:AppointmentService;」という行を追加しました記述部分に...私はそれがコンポーネントのCLIによって生成されたものを模倣しました... – moonshine
あなたは 'new 'オペレータ – Nolyurn