You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在JustMock自动模拟中使用ReturnsAsync的方法咨询

JustMock MockingContainer 异步返回简化方案

问题说明

使用JustMock标准模拟时支持.ReturnsAsync()方法,但在MockingContainer<T>自动模拟场景下,只能通过Task.FromResult<T>()手动包装返回值,语法繁琐:

service
    .Arrange<IRepository>(r => r.SomeAsyncMethod("input"))
    .Returns(Task.FromResult<ISomeModel>(resultModel));

希望实现类似标准模拟的简化语法:

service
    .Arrange<IRepository>(r => r.SomeAsyncMethod("input"))
    .ReturnsAsync(resultModel);

解决方案

目前JustMock官方的MockingContainer<T> API并未内置ReturnsAsync扩展方法,但可以通过自定义扩展方法实现该简化语法:

自定义ReturnsAsync扩展

using Telerik.JustMock;
using Telerik.JustMock.Core;

public static class MockingContainerExtensions
{
    public static IReturnsResult<TContainer> ReturnsAsync<TContainer, TResult>(
        this IReturns<TContainer, Task<TResult>> arrangement, 
        TResult result)
    {
        return arrangement.Returns(Task.FromResult(result));
    }
}

添加该扩展后,即可直接使用.ReturnsAsync(resultModel)的简化写法,完全符合需求。

补充说明

如果不想自定义扩展,也可以利用C#的类型推断简化Task.FromResult的写法:

service
    .Arrange<IRepository>(r => r.SomeAsyncMethod("input"))
    .Returns(Task.FromResult(resultModel));

但自定义扩展的语法更贴近标准模拟的使用习惯,体验更一致。

内容的提问来源于stack exchange,提问作者Drew Antonich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 21:27:36