【问题标题】:Setting Expectation On Method That Returns Plain Task对返回普通任务的方法设置期望
【发布时间】:2014-10-10 01:52:37
【问题描述】:

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

async Task DoSomethingIncredible();

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    使用Task 构造函数创建一个任务而不启动它,因此它永远不会完成。 awaits 的任何代码都不会继续。这可能就是您的环境卡住的原因。如果您只需要一个已完成的任务以便调用者可以继续使用Task.FromResult

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

    实际结果是什么并不重要,因为泛型 Task<int> 继承自非泛型 Task

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多