2015-06-08 18 views
5

Açısal uygulamamı Jasmine ile test etmek istiyorum. Bu yüzden bazı testler yaptım, çoğu iyi çalışıyor. Ancak, işlevlerimden biri kullanıcının bir bilgi istemini doldurmasını gerektirir. Testler bu istemi dolduramaz, bu yüzden onları spyOn(window,'prompt').and.returnValue('test') ile alay ettim. Bu çalışır, ama sadece bir kez.Jasmine spyOn çoklu dönüşlü

İki bileşenimi (istemin bulunduğu işlev) eklediğimde, spyOn sonucunu 'test' sonucunu içeren ilk istem ve 'test2' ile ikinci komut istemini yapmak istiyorum.

it 'should place the component as last object in the form', -> 

     spyOn(window, 'prompt').and.returnValue('test') 
     builder.addFormObject 'default', {component: 'test'} 

     spyOn(window, 'prompt').and.returnValue('test2') 
     builder.addFormObject 'default', {component: 'test2'} 

     expect(builder.forms['default'][0].name).toEqual('test') 

Ama bu şu hatayı veriyor: şu şekildedir: Ben bunu denedim Error: prompt has already been spied upon Bu oldukça mantıklı, ama bir spyOn ile dönen başka bir yol bilmiyorum.

Öyleyse, istediğim şudur: İlk addFormObject önce 'test' döndüren istemde casusluk yapmak istiyorum. Ve ikinci addFormObject Sana kodu

it 'should place the component as last object in the form', -> 
    mockedValue = null 

     spyOn(window, 'prompt').and.returnValue(mockedValue) 
     mockedValue = 'test' 
     builder.addFormObject 'default', {component: 'test'} 

     mockedValue = 'test2' 
     builder.addFormObject 'default', {component: 'test2'} 

     expect(builder.forms['default'][0].name).toEqual('test') 

cevap

1

ile casusluk istiyorum o:

var spy = spyOn(window, 'prompt'); 

... 
spy.and.returnValue('test') 

... 
spy.and.returnValue('test2') 
2

But this gives the following error: Error: prompt has already been spied upon

neye yapmanın doğru yolunu takip alay değeri döndürmek ve benzeri dinamik olarak ayarlayabilirsiniz dönüş 'test2' spyOn ile

1

yasemin v2.5 beri küresel allowRespy() ayarını kullanın.

jasmine.getEnv().allowRespy(true);

İstediğiniz ve/veya birinci casus erişimi olmadığı zamanlarda, spyOn() birden çok kez çağırmak mümkün olacak

. Zaten aktifse önceki casusuna döneceğine dikkat edin.

spyOn(window, 'prompt').and.returnValue('test') 
 
... 
 
spyOn(window, 'prompt').and.returnValue('test')