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

如何在服务层测试Add方法?

支淮晨
2023-03-14
public void AddArticle(ArticleDto article)
{
    CheckArticleFiles(article);

    CheckArticleTitle(article.Title);
    CheckArticleSummary(article.Summary);
    CheckArticleBody(article.Body);

    _articleRepository.AddArticle(article.MapToDbModel());
    _articleRepository.SaveChanges();
}

共有1个答案

尉迟正平
2023-03-14

通常,接口的某些部分被设计成只在某些上下文中使用(仅在配置期间,仅在初始化期间,仅从某些线程,仅从测试代码,仅在某些系统状态中,...)。通过编程语言来表达这一点从而产生真正的技术障碍的可能性相当有限(通常您有公共和私有的,通常受到保护,有时稍微多一点)-而且通常存在克服障碍的技巧,如公共或私有声明,例如在C++中使用预处理器技巧,在Java和类似语言中使用内省。例如,在Python中,这样的机制完全被约定所取代--如果不遵守约定,迟早会松懈。

因此,从一个不关注特定编程语言的角度来看,我更喜欢将publicprivate等更多地视为表示体系结构约束的逻辑概念。例如,将一些表示实现细节的私有函数作为公共方法提取到一个单独的类中,并不会改变它们作为实现细节的性质:其他组件当然也不应该使用其他类,如果这些实现细节发生变化,使用该类的测试代码也不会受到更小的影响。我提到这一点只是为了证明,与将方法提取到不同的类中并告诉其他人不要使用该类相比,我认为公开一个方法但告诉其他人不要使用该方法没有太大区别。

在您的示例中,您希望表示某些函数应该被视为实现细节(private),但仍然可以用于单元测试目的。而且,是的,我同意直接测试private函数比从所谓的服务层间接测试它们更有意义。这当然是一种权衡,但根据我的经验,我也知道这种情况。

 类似资料:
  • 我已经开始考虑在我的项目中围绕一些业务逻辑添加一些单元测试。 我想测试的第一个方法是服务层中的一个方法,它返回给定节点的子节点列表。 该方法如下所示: 我想象这样的测试方法是提供一个假树结构,然后测试提供节点是否返回正确的子节点。 ssdsContext是一个对象上下文。 我已经看到可以为提取和接口如何模拟ObjectContext或ObjectQuery 我还读到,as Entity Frame

  • 我使用的是Spring Boot 1.5.2.Release,我的服务类注释为 我的单元测试类注释为:

  • 我试图在我的object kotlin类中做一些测试,但是当我试图传递对象时,我的thenReturn方法中可能会出现一个错误。我得到一个要求:单位!找到结账。有人能告诉我怎么可能测试它?? 如果移除enreturn方法,则会出现以下错误: 我引用了这个链接,但我不能得到它。

  • 在我的项目中,我在进行单元测试时遇到了问题。一个问题是,仅仅进行联调就可以更快地编写,并且还可以测试组件是否真正协同工作。单元测试新颖的“算法”之类的似乎要容易得多。单元测试服务类感觉是错误和无用的。 我使用mockito来模拟spring数据存储库(以及DB访问)。问题是,如果我告诉模拟存储库在方法调用getById时返回实体A,它显然会返回实体A,服务也会返回实体A。是的,该服务做了一些额外的

  • 问题内容: 我想直接通过HTTP测试我的RESTful应用程序,我正在寻找可以帮助我完成该任务的工具。基本上,我正在寻找一个HTTP请求的简单包装,该请求可以提交例如HTML表单或序列化资源(如JSON或XML)。 如果有一种方法可以验证服务是否确实遵循REST体系结构准则(无状态,URI,内容协商等),那将是很好的。 能够与JUnit一起使用将是一个方便的好处。您是否知道任何可以帮助我完成我想做

  • 像组件一样,服务通常需要依赖,Angular通过服务类的构造函数注入。由于我们在Angular的引导过程之外初始化这些类,我们必须自己显式注入这些依赖。这是通过使用TestBed配置测试模块传回所需的依赖项(如HTTP模块)来实现的。