替换对象属性时出现意外的异常
Unexpected beahviour when replacing object properties
我正在使用摩卡对新编写的类运行测试,需要构建一些Event
进行比较。我计划使用对象存根并将它们替换为Event
类的实际实例,由于数据库连接的使用,这些实例具有异步构造函数。所以我使用递归调用来按顺序处理存根。问题是:我所有的存根对象都替换为最新的实例,我不知道为什么。请解释我错在哪里。
活动咖啡:
class Event
start = 0
duration = 0
title = ""
atype = {}
constructor: (_start, _duration, _title, _atype, cb) ->
start = _start
duration = _duration
title = _title
evt = @
ActivityType.find( {} =
where: {} =
title: _atype
).success( (res) ->
atype = res
cb? evt
).error( () ->
throw new Error "unable to assign atype '#{_atype}'"
)
# ...
Event.test.coffee:
# ...
suite "getEventAt", () ->
events =
FREE: {} =
start: 0
duration: Day.MINUTES_PER_DAY
title: "Free time"
type: "FREE"
REST: {} =
start: 10
duration: 30
title: "rest"
type: "_REST"
FITNESS: {} =
start: 30
duration: 30
title: "fitness"
type: "_FITNESS"
WORK: {} =
start: 20
duration: 30
title: "work"
type: "_WORK"
suiteSetup (done) ->
buildEvent = (ki) ->
ks = Object.keys events
( (k) ->
v = events[k]
new Event v.start, v.duration, v.title, v.type, (e) ->
events[k] = e
if k == ks[ks.length-1]
return done?()
return buildEvent(ki+1)
)(ks[ki])
buildEvent(0)
# ...
开始持续时间标题和atype是类变量,因此每次创建新事件时都会被覆盖
class Event
constructor: (_start, _duration, _title, _atype, cb) ->
@start = _start
@duration = _duration
@title = _title
evt = @
ActivityType.find( {} =
where: {} =
title: _atype
).success( (res) =>
@atype = res
cb? evt
).error( () ->
throw new Error "unable to assign atype '#{_atype}'"
)
请注意成功回调时的平箭头(有关更多详细信息,请参阅:http://coffeescript.org/#fat-arrow)
相关文章:
- 分析高度属性时出现意外值{{specs.height}}.index.html
- 铬:“;未捕获的语法错误:意外的标记:"
- Javascript未捕获语法错误意外的标识符错误
- 未捕获的语法错误:意外的标记{
- "未捕获的语法错误:意外的标记}"
- JSON分析错误:Java中AJAX、Javascript和Servlet的意外EOF
- Node.js使用Series函数(模式?)实现流控制时出现意外结果
- 在javaservlet doPost方法中启动线程时,无法返回异常消息
- 未捕获的SyntaxError:具有服务器变量的意外标识符
- nknown错误:Runtime.evaluate引发异常:SyntaxError:意外的令牌var
- Angular-使用httpBackend测试http服务会引发意外异常
- 未捕获语法异常:第1行输入意外结束
- 替换对象属性时出现意外的异常
- Ajax JSON 异常意外令牌 [.
- 带有 JavaScript 异常的 ajax:意外的输入结束
- Javascript 本机方法抛出意外异常
- Selenium [error]意外异常:fileName ->chrome://selenium-ide/../sel
- 捕获WebSocket异常:"在WebSocket握手期间错误:意外响应码:503"
- 了解数字到字符串(基数)意外的标记异常
- Javascript异常"意外标记"