2017-05-24 116 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

相關問題