当前位置: 首页 > 知识库问答 >
问题:

最小化重复的存储库测试

微生信鸿
2023-03-14
  • 使用实体框架(EF)创建的数据上下文。
  • 使用EF生成的实体作为整个应用程序的通用DTOs。
  • DAL包含扩展RepositoryBase抽象类的不同存储库,该抽象类实现了基本的CRUD操作;特定的存储库只有针对其实体类型的特定方法。可以软删除的实体的存储库扩展了一个SoftDeleteRepositoryBase,而后者本身扩展了RepositoryBase.

为了给出一些上下文,这里有一些类/接口。

通用存储库接口:

public interface IRepository<T> : IDisposable where T : class
{
    void Add(T entity);
    void Update(T entity);
    void Obliterate(T entity);
    void Obliterate(Expression<Func<T, bool>> where);
    T GetById(long id);
    T GetById(string id);
    IQueryable<T> GetAll();
    IQueryable<T> GetMany(Expression<Func<T, bool>> where);
    T GetSingle(Expression<Func<T, bool>> where);
    void SaveChanges();
}
public abstract class RepositoryBase<T> : IRepository<T> where T : class
{
    ...
}
public class FooRepository : RepositoryBase<File>, IFooRepository
{
    // Specific methods here
    ...
}

谢谢

共有1个答案

范云
2023-03-14

我不知道假设插入对Foo实体有效是否明智,例如,它也对其他实体有效

不,你不能这样假设。如果某个实体没有正确的映射怎么办?如果忘记在dbcontext上定义dbset 怎么办?如果要完全确定,应该测试所有具体存储库的所有方法。

然而,在测试创建和维护方面,对每一个测试都增加了额外的开销

 类似资料:
  • 我正在处理一个自动化的hashicorp保险库进程,我需要重复运行保险库操作符init命令,因为试错测试,我试图卸载保险库并再次安装,但似乎这并没有删除以前的解封密钥+根令牌,我该如何做到这一点? 我在某个地方读到,我需要删除存储“文件”路径,我已经删除了,但它不起作用(实际上我的/opt/vault/data/目录是空的),下面是我的vault.hcl文件:

  • 在我看来,SpringBoot项目需要很长时间来加载。发生这种情况可能是因为SpringBoot正在为您配置组件,其中一些组件您甚至可能不需要。要做的最明显的事情是从您的类路径中移除不必要的依赖项。然而,这还不够。 还有什么可以做的来加快SpringBoot应用程序的启动时间吗?

  • 由于我对这个平台还不熟悉,所以我正在尝试找出Spring的工作方式。我有一个存储库声明如下: 我有几个查询方法在那里,但现在我想有另一个方法,不只是一个查询。该方法运行一个查询,如果找到一条记录,它就返回它,如果没有,它就用一些默认参数创建它。这种方法该何去何从? 我在文档中看到了自定义存储库实现,但因为它们与实际的是分开的,所以它们似乎不能访问数据库。

  • 我正在使用Spring Boot进行多模块项目。我想编写一些单元测试来检查我的存储库,服务等。存储库代码是在公共项目上编写的,而公共项目在其他项目上使用。此项目不包含任何初学者应用。它只是由实体、存储库和服务组成。 我看到这个主题(如何使用Spring Boot测试Maven模块项目)关于类似的问题,但我没有设法成功地实现它来测试我的存储库。 当我启动测试时,EntityARepository会引

  • 最近我一直在使用GitHub,我想知道,GitHub上托管的文件的存储库限制是多少。通用域名格式?我一直想知道这一点,因为我考虑使用GitLab,因为它允许每个存储库使用10GB。

  • 我的xpath值是动态的-示例-//label[text()=$USERNAME$]-我将在测试中用值“admin1”替换$USERNAME$。我可能会点击管理员,它需要我编辑页面。 需要一个考虑内存执行时间、可靠性和测试性能的解决方案。 选项1。在每个页面类中将其保持为私有静态最终字符串,并为每个对象提供一个getter方法? 将其保持在属性文件中,作为键值对加载文件并在需要时获取值。(为每个对