나는 각도 2 테스트 (카르마, 쟈스민)를 배우고 있습니다. 나는 이미 HTTP 서비스에 대한 작동 테스트를 가지고 있으며 주로 this Semaphore tutorial on services and testing에서 가져왔다. 나는 보통 비동기 통해 제대로 작동 테스트를 (([이면 MyService는, ...다른 서비스를 호출하는 비동기 서비스를 조롱하는 각도 2
내 실제 프로그램은 아래와 같이 서비스에 싸여 서비스가 있습니다.
@Injectable()
export class GlobalsService {
private options: Option[] = [];
error: any;
constructor(private optionService: OptionService) { }
public getGlobals(): void {
let that = this;
this.optionService
.getOptions()
.then(options => that.fillOptions(options))
.catch(error => that.error = error);
}
[SNIP]
optionService.getOptions을 (주입) 숨겨진 내용의 입력)(). 다음 globalService.options 목록을 채 웁니다의 globalsService.getGlobals을 기다렸다되는 약속을 반환 동기 또는 비동기 (지연 장소에서 중 하나라고합니다.
export class AppComponent implements OnInit {
constructor(private globalsService: GlobalsService) { }
ngOnInit() {
this.globalsService.getGlobals();
}
[SNIP]
내가 갇혀있는 것은 globals를 호출하는 방법입니다. 테스트 컨텍스트에서 vice.getGlobals(). async()를 통해 호출해야한다고 생각합니다.
지금까지 내 모의 OptionService은 다음과 같습니다
@Injectable()
export class MockOptionService {
constructor() { }
getOptions(): Promise<Option[]> {
let options: Option[] = [
{ id: 'NY' } // truncated property list
];
return Promise.resolve(options);
}
}
내가 다음을 통해 호출 할 계획입니다 :
는it('should get Option objects async',
async(inject([GlobalsService, MockOptionService], (globalsService: GlobalsService, optionService: OptionService) => {
globalsService.getGlobals()
.then(() => {
expect(globalsService.getOptions().length).toBe(1);
});
하지만, 내 "스마트"프로그래머 편집기 (SublimeText)은 말한다 '속성' 그렇다면 'void'유형에 존재하지 않습니다. 비동기 (주사를 사용하거나 그냥 틱 (tick)을 사용해야하는지 확실하지 않습니다.)
의견, 누구입니까?
감사합니다. Jerome.
.. 물건을 바꾸지 마십시오. 내 대답을 아래에서보십시오. –