gpt4 book ai didi

c# - 提供一个通用的模拟

转载 作者:行者123 更新时间:2023-11-30 14:59:53 25 4
gpt4 key购买 nike

我正尝试在 MVC 项目的解决方案中概括一些测试代码。因为我们正在为每个 Controller 编写相同的测试,所以我的想法是我可以使用泛型来实现它,所以只需要一个测试。

不幸的是,我目前收到错误:Error 1 The type 'TRepo' must be a reference type in order to use it as parameter 'T' in the generic type or method 'Moq.Mock<T>'

这是相关代码。如果需要,我可以提供更多。

测试库.cs

public class TestBase<TController, TObject, TRepo>
where TController : IRMCController<TObject>
where TRepo : IRMCRepository
{
public Mock<TRepo> Repo { get; set; }
}

CompaniesTest.cs

public class CompaniesTest : TestBase<CompaniesController, Company, ICompanyRepository>

感谢您的帮助。

最佳答案

在最小起订量中,Mock<T>类有一个 class对其泛型类型的约束。这是它的定义方式:

public class Mock<T> : Mock where T : class

所以如果你打算在你的类中使用它,你必须定义相同的 class除了 IRMCRepository 之外的约束:

public class TestBase<TController, TObject, TRepo>
where TController : IRMCController<TObject>
where TRepo : class, IRMCRepository

{
public Mock<TRepo> Repo { get; set; }
}

现在您的代码可以编译了。这是基本的 generic constraints 在 C# 中。

关于c# - 提供一个通用的模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16112843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com