对返回普通任务的方法设置期望值
本文关键字:方法 设置 期望值 任务 返回 | 更新日期: 2023-09-27 18:26:14
我正在为一个返回纯(即非泛型)Task
的方法的模拟和设置期望值的正确方法而苦苦挣扎。假设我有一个名为ICanNotCode
的接口,方法如下:
async Task DoSomethingIncredible();
我使用Rhino Mocks作为我的mocking框架,并试图为使用该接口的单独方法编写一个测试。预期如下:
canNotCodeMock.Expect(mock => mock.DoSomethingIncredible()).Return(new Task(() => { }));
代码可以编译,但每当我在Visual Studio中运行它时,它都会挂起,直到我手动终止任务运行程序。
对返回Task
的方法设置期望值的正确方法是什么?非常感谢你的帮助!
使用Task
构造函数创建一个任务而不启动它,因此它永远不会完成。任何await
的代码都永远不会继续。这可能就是您的环境陷入困境的原因。如果你只需要一个完成的任务,那么调用者就可以继续使用Task.FromResult
:
canNotCodeMock.Expect(mock => mock.DoSomethingIncredible()).Return(Task.FromResult(-1));
实际结果并不重要,因为泛型Task<int>
继承自非泛型Task
。