2014-10-10 39 views
1

我正在努力以正確方式模擬並設置返回普通(即非泛型)Task的方法的期望值。比方說,我有一個名爲ICanNotCode以下方法的接口:在返回普通任務的方法上設置期望

async Task DoSomethingIncredible(); 

我用犀牛嘲笑我的嘲弄框架,並一直在試圖寫一個使用該接口單獨的方法進行測試。預期看起來是這樣的:

canNotCodeMock.Expect(mock => mock.DoSomethingIncredible()).Return(new Task(() => { })); 

代碼編譯,但每當我運行它的Visual Studio它只是掛起,直到我手動終止任務運行。

什麼是正確的方法來設置返回Task方法的期望?非常感謝你的幫助!

回答

5

使用Task構造函數創建一個任務而不啓動它,因此它永遠不會完成。任何代碼,它永遠不會繼續前進。這可能是您的環境卡住的原因。如果你只需要完成任務,使主叫方可以繼續使用Task.FromResult

canNotCodeMock.Expect(mock => mock.DoSomethingIncredible()).Return(Task.FromResult(-1)); 

這其實並不重要,什麼是真正的結果,因爲從非通用Task通用Task<int>繼承。