gpt4 book ai didi

c# - 如何使用 Unity 处理 IDisposable 存储库?

转载 作者:太空狗 更新时间:2023-10-29 21:16:57 25 4
gpt4 key购买 nike

我的工作中有一个 IDisposable DbContext。我想在不访问数据库的情况下对这项工作进行单元测试。我有什么选择可以做到这一点?

我使用的是 Microsoft 默认的 Fakes 程序集。

我的工作:

public void Work()
{
do
{
//code here
using (var repository = new Repository<User>())
{
repository.Save(user);
}

} while (true);
}

我正在尝试测试,但在这部分测试中它失败了,因为它实际上创建了 Repository 类的一个新实例。

我的测试方法:

using (ShimsContext.Create())
{
Data.Repository.Fakes.ShimRepository<Domain.Fakes.ShimUser>.Constructor = (a) => { };

Data.Repository.Fakes.ShimRepository<Domain.Fakes.ShimUser>.AllInstances.SaveT0 = (a, b) =>
{
};

var service = GetService();
service.Work(); //Throws exception
}

如何伪造这个Save方法?

最佳答案

你违反了DIP在这里,使对您的服务进行单元测试比应有的困难得多。您还应该避免使用通用存储库并喜欢 role interfaces .

相反,将抽象注入(inject)到存储库的服务中,例如IUsersRepository 定义了您的Save 方法。然后在服务的单元测试中,您可以简单地使用 IUsersRepository 的 stub 实现。

关于c# - 如何使用 Unity 处理 IDisposable 存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33150168/

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