簡體   English   中英

使用許多參數的 Moq ReturnsAsync

[英]Moq ReturnsAsync using many parameters

我一直在成功使用 Moq 的ReturnsAsync函數,但遇到了以下問題。 我總是在將參數添加到我的 lambda 表達式時返回 null ......這次當我將它們全部添加時,我得到了可怕的“無法將 lambda 表達式轉換為類型......”有什么明顯的我得到的錯誤的? Setup方法解析得非常好......只是不是ReturnsAsync

可以定義的參數數量有限制嗎? 我試過並注意到它在第 15 個參數之后失敗了......

var buildServiceMock = new Mock<IBuildService>();

buildServiceMock
    .Setup(bsm => bsm.QueryBuildsAsync(
        It.IsAny<BuildType>(),
        It.IsAny<string>(),
        It.IsAny<DateTime?>(),
        It.IsAny<DateTime?>(),
        It.IsAny<string>(),
        It.IsAny<BuildReason?>(),
        It.IsAny<BuildStatus?>(),
        It.IsAny<BuildResult?>(),
        It.IsAny<IEnumerable<string>>(),
        It.IsAny<IEnumerable<string>>(),
        It.IsAny<int?>(),
        It.IsAny<int?>(),
        It.IsAny<QueryDeletedOption?>(),
        It.IsAny<BuildQueryOrder?>(),
        It.IsAny<string>(),
        It.IsAny<IEnumerable<int>>(),
        It.IsAny<string>(),
        It.IsAny<CancellationToken>()))
    .ReturnsAsync((
        BuildType buildType,
        string buildNumber,
        DateTime? minDateTime,
        DateTime? maxDateTime,
        string requestedFor,
        BuildReason? reasonFilter,
        BuildStatus? statusFilter,
        BuildResult? resultFilter,
        IEnumerable<string> tags,
        IEnumerable<string> properties,
        int? top,
        int? maxBuildsPerDefinition,
        QueryDeletedOption? deletedFilter,
        BuildQueryOrder? queryOrder,
        string branchName,
        IEnumerable<int> buildIds,
        string label,
        CancellationToken cancellationToken) =>
    {
        return null;
    });

我發現我的問題的根源是這個......

public static IReturnsResult<TMock> ReturnsAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TMock, TResult>(this IReturns<TMock, ValueTask<TResult>> mock, Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> valueFunction) where TMock : class;

ReturnsAsync at max 僅允許您在 lambda 表達式的簽名中使用最多 15 個參數。

然而,我只需要在我的 ReturnsAsync 委托方法中使用一個 IEnumerable,所以我很好......我錯了,因為我認為我必須為“Setup”調用中模擬的方法中的每個參數指定一個參數。 ..現在我發現你不需要那樣做,我可以走了。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM