2017-05-24 62 views
0

我想单元测试这个文件,你可以请告诉如何写茉莉花检验这种如何对这个文件进行单元测试?

import { Effect, Actions } from '@ngrx/effects'; 
import { NavigationActionType } from 'app/core/store/actions/navigation/navigation.action'; 
import { NavigationService } from 'app/core/services/navigation.service'; 
import 'rxjs/add/operator/switchMap'; 

@Injectable() 
export class NavigationServiceEffect { 
    @Effect() 
    navigations$ = this.actions$ 
         .ofType(NavigationActionType.TRIGGER_LOAD_NAVIGATION_ITEMS) 
         .switchMap(() => this.navigationService.load()) 
         .map(data => ({ type: NavigationActionType.LOAD_NAVIGATIONS_LINKS, payload: data})); 

    constructor(private actions$: Actions, private navigationService: NavigationService) {} 

} 
+0

https://开头github上。 com/ngrx/effects/blob/master/docs/testing.md – cartant

+0

Thanks @cartant。我试过了,但控件似乎没有达到预订方法中的预期声明。例如。如果我在测试用例的subscribe方法内添加console.log(result),它不会输出任何看起来像订阅为空的东西。可能是什么原因?此外,我没有得到这个 - 为什么你会注入你正在测试的类?我正在测试Effect类,所以为什么要注入? – Angad

回答

0
it('should dispatch LOAD_NAVIGATIONS_LINKS',() => { 
    runner.queue({ 
    type: NavigationActionType.TRIGGER_LOAD_NAVIGATION_ITEMS, 
    payload: 1 
    }); 

    navigationServiceEffect.navigations$.subscribe(result => { 
    expect(result.type).toEqual(NavigationActionType.LOAD_NAVIGATIONS_LINKS) 
    expect(result.payload).toEqual(1); 
    }); 
} 

注意你必须嘲笑了的NavigationService