在返回普通任务的方法上设置期望值

时间:2014-10-10 01:52:38

标签: c# .net unit-testing async-await rhino-mocks

我正在努力使用正确的方法来模拟和设置返回普通(即非泛型)Task的方法的期望。假设我有一个名为ICanNotCode的接口,使用以下方法:

async Task DoSomethingIncredible();

我正在使用Rhino Mocks作为我的模拟框架,并且一直在尝试为使用此接口的单独方法编写测试。期望看起来像这样:

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

代码编译,但每当我运行Visual Studio时,它都会挂起,直到我手动终止任务运行器。

对返回Task的方法设置期望的正确方法是什么?非常感谢你的帮助!

1 个答案:

答案 0 :(得分:5)

使用Task构造函数创建一个任务而不启动它,因此它永远不会完成。 await它永远不会继续前进的任何代码。这可能是您的环境陷入困境的原因。如果您只需要完成的任务,那么呼叫者可以继续使用Task.FromResult

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

实际上结果并不重要,因为通用Task<int>继承自非通用Task

相关问题