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

本文关键字:方法 设置 期望值 任务 返回 | 更新日期: 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