我正在努力使用正确的方法来模拟和设置返回普通(即非泛型)Task
的方法的期望。假设我有一个名为ICanNotCode
的接口,使用以下方法:
async Task DoSomethingIncredible();
我正在使用Rhino Mocks作为我的模拟框架,并且一直在尝试为使用此接口的单独方法编写测试。期望看起来像这样:
canNotCodeMock.Expect(mock => mock.DoSomethingIncredible()).Return(new Task(() => { }));
代码编译,但每当我运行Visual Studio时,它都会挂起,直到我手动终止任务运行器。
对返回Task
的方法设置期望的正确方法是什么?非常感谢你的帮助!
答案 0 :(得分:5)
使用Task
构造函数创建一个任务而不启动它,因此它永远不会完成。 await
它永远不会继续前进的任何代码。这可能是您的环境陷入困境的原因。如果您只需要完成的任务,那么呼叫者可以继续使用Task.FromResult
:
canNotCodeMock.Expect(mock => mock.DoSomethingIncredible()).Return(Task.FromResult(-1));
实际上结果并不重要,因为通用Task<int>
继承自非通用Task
。