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')