2013-07-15 51 views
0

我有一個ExampleModel調用了一個從我們的後端檢索數據的ExampleService。我無法弄清楚如何爲我的應用程序編寫單元測試;使用Oil擴展單元測試和模擬robotlegs服務調用

ExampleService

public function retrieveMyToDoList(parameters):Promise 
{ 
    var promise:Promise = performRequest({request: "call to backend", parameters: values, session_id: clientModel.sessionID}); 
    promise.addResultProcessor(parseRetrieveToDoListResult); 
    return promise; 
} 

protected function parseRetrieveToDoListResult(data:Object, callback:Function):void 
{ 
    does some JSON parsing into an object 
    callback(null, object containing my retrieved data) 
} 

ExampleModel

public function getMyToDoList():Promise 
{ 
    var promise:Promise = exampleService.retrieveToDoList(parameters); 
    promise.addResultHandler(onGetToDoListResult); 
    promise.addErrorHandler(onGetToDoListError); 
    return promise; 
} 

private function onGetHeadrsByUserResult(promise:Promise):void 
{ 
    // where this event will be listened to by mediators etc 
    dispatchEvent(new ResponseEvent(GOOD_RESULT)); 
} 

private function onGetHeadrsByUserError(promise:Promise):void 
{ 
    dispatchEvent(new ResponseEvent(BAD_RESULT)); 
} 

我試圖用asmock嘲笑我的服務,這樣我可以測試我的模型以及它如何處理:如下圖所示,其被構造結果對象中的各種結果,但我該如何嘲笑回調?我看到了返回值被嘲笑的例子,但在我使用Promise和回調的情況下,我不太確定如何繼續。

如果有人可以請指教。 謝謝!

回答

1

您可以讓模擬服務返回一個真正的承諾,並直接調用承諾的handleResult方法。

僅供參考:從模型直接依賴於服務並不是一個好主意。您應該讓服務操縱模型,或將服務的結果傳遞給將操縱模型的命令。模型不應該依賴於輔助類的其他內容。

+0

handleResult確實做到了!感謝Creynders的評論。那麼我會審查一下。 –