【发布时间】:2015-08-22 19:25:51
【问题描述】:
我想用 Jasmine 测试我的 Angular 应用程序。
所以我创建了一些测试,其中大多数都可以正常工作。
但是,我的一项功能要求用户填写提示。
测试无法填满这个提示,所以我用spyOn(window,'prompt').and.returnValue('test') 模拟了它们。这有效,但只有一次。
当我添加我的两个组件(提示所在的函数)时,我想spyOn 第一个提示的结果为“test”,第二个提示的结果为“test2”。我尝试这样做:
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')
但这会产生以下错误:Error: prompt has already been spied upon
这很合乎逻辑,但我不知道用 spyOn 返回的另一种方式。
所以,我想要的是: 在第一个 addFormObject 之前,我想监视返回“test”的提示。第二个 addFormObject 我想用 return 'test2' 监视
【问题讨论】:
标签: javascript angularjs coffeescript jasmine