2016-12-01 12 views

cevap

3

Yapmanız gereken tek şey, yönlendirici gezinme yönteminin doğru argümanla (yani, giriş sayfasının rotası) çağrıldığını test etmektir. Gerçek bir navigasyonu test etmeye çalışmak, bir birim testi için gerekenden daha fazla yan etkiye neden olabilir.

Router.navigate yönteminin çağrıldığını kontrol etmek için, bir saplama ve casus kullanmanız yeterlidir. Ben yönlendirici kullanılmıyorsa am

@Component({}) 
class SomeComponent { 
    constructor(private router: Router) {} 

    logout() { 
    this.router.navigate(['/login']) 
    } 
} 

let routerStub; 

beforeEach(() => { 
    routerStub = { 
    navigate: jasmine.createSpy('navigate'); 
    } 
    TestBed.configureTestModule({ 
    declaration: [ SomeComponent ], 
    providers: [ 
     { provide: Router, useValue: routerStub } 
    ] 
    }); 
}); 

it('it should navigate to login after user logs out',() => { 
    let component = TestBed.createComponent(SomeComponent).componentInstance; 
    component.logout(); 

    expect(routerStub.navigate).toHaveBeenCalledWith(['/login']); 
}) 
+0

. Bunun yerine, NavController kullanarak. Bu konuda herhangi bir öneriniz var mı? – devtiwa

+0

NavController için bir saplama oluşturun ve 'push' yöntemi veya' setRoot' üzerinde casus yapın. hangisini kullanıyorsunuz? –

+0

'let nav = {setRoot: jasmine.createSpy ('setRoot')}' –

0

Eğik takım açısal çevrenin tüm yerli yönlerini içine test yararlanmak için çok çalıştı. Yerel açısal yönlendiriciyi kullanıyorsanız, kullanmanız için test yaptırmışlardır. Bu BLOG kontrol edin. Açısal yönlendirici kullanmıyorsanız, o zaman kendi başınasınız.

İlgili konular