2014-12-31 18 views
6

$ state.go() içeren ve bu belirli satıra yeniden yönlendirmesi beklenen bir işlev için birim sınamalarını nasıl yazabilirim? Bir birim test olduğundan

  $scope.inviteMembers = (id)=> { 
       $state.go('invite', {deptId: id}); 
       } 
+0

Denetleyicinizin geri kalanı için zaten birim testleri var mı? – lukewestby

+0

@lukewestby .No. Sadece durumları kontrol etmek için yazıyorum – forgottofly

cevap

15

, sadece başka bir şey, fonksiyon çağrıldığını emin olmak gerekir. Bu doğrultuda

şey:

it('should move to the invite page after inviting someone', function() { 
    spyOn($state, 'go'); 

    $scope.inviteMembers(1); 

    expect($state.go).toHaveBeenCalledWith('invite', {deptId: 1}); 
}); 

Yani burada ana fikir $state ait go yöntemine gözetlemek için ve biz yöntemini çağırdığınızda, sadece $state.go yöntemi denir doğrulamak gerekir ve hangi parametrelerle.

Bana sormadan önce ... Evet ama durumun da değiştiğinden emin olmak istiyorum. Peki bunu yapmana gerek yok.

Bu bir birim sınamasıdır, yani tek endişeniz bu denetleyiciyi ve başka hiçbir şeyi sınamaktır ve bunun sorumluluğu yalnızca bu yöntemi çağırmaktır. Bundan sonra ne olur, başka birisinin sorumluluğu, bu durumda ui yönlendirici ve bahse girerim o ui yönlendirici iyi bir şekilde test edilir :)

+0

Teşekkürler @ Jesus.Can bu konuya da bakın lütfen ..http: //stackoverflow.com/questions/27740395/cannot-read-property-loadlisting -of-tanımsız-karma-yasemin – forgottofly