我使用下面的結構作爲模擬對象其功能是作爲與環連接的方法的對象,以形成對象鍵的嵌套函數目的:創建使用一個字符串數組
PlayerNull =
find : ->
populate : ->
exec : (callback) ->
callback false, false
在我的測試我然後替代真實模型這個模仿對象和我的控制器調用每個函數又比如:
Model.find().populate().exec(callback)
,因爲我使用了很多次發現自己,我很好奇,是否我可以創建一個幫手函數來簡化這個(略),使用一個輔助函數下面的表格:
PlayerNull = helper.mockNest ['find', 'populate', 'exec'], (callback) ->
callback false, false
我已經來到了下面的函數代碼,但是這是行不通的:
exports.mockNest = (func_names, func_final) ->
func_names.reverse()
func_next = func_final
for func_name in func_names
_func_next = func_next.bind({})
_next = {}
_next[func_name] = ->
_func_next
func_next = _func_next
func_next
我來實現,我需要克隆func_next
每個迴路或否則參考似乎被保留並且分配給func_next
似乎改變了以前的所有分配。
非常感謝您解釋這個問題,並將我的注意力集中在「do」關鍵字上,非常酷,讓我度過了終點。你的最終代碼並不完全正確,我會添加一個答案並接受。 – DanH 2014-10-05 05:36:28
糟糕,你是對的,它沒有工作;但解決辦法很小。與你的代碼相比,它甚至可以在空的'func_names'數組中使用。 – Bergi 2014-10-05 10:46:29