ServiceA不应该直接调用ServiceB派生的Dao方法

这篇具有很好参考价值的文章主要介绍了ServiceA不应该直接调用ServiceB派生的Dao方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ServiceA不应该直接调用ServiceB派生的Dao方法

背景

     服务层单元测试是指针对应用程序中服务层代码的测试。服务层通常包含业务逻辑和数据处理代码,因此服务层单元测试的目标是验证这些代码的正确性和可靠性。通过编写针对服务层方法的测试用例,并模拟服务层的依赖项,我们可以在隔离环境中对服务层代码进行测试,以确保它的功能符合预期。这种测试方法有助于提高整个应用程序的代码质量和稳定性。

我们在ServiceA中直接调用ServiceB.lambdaQuery()进行数据DAO访问

MybatisPlus的官方 “链式调用 lambda 式”

我们在单元测试中,似乎已经不容易做mock, 因为我们原本用意应mock对应依赖的service方法。

原则

  • 本质是从业务方法角度每个业务常见 需要自己的方法,而不是直接依赖其他Service持久层方法。假设后续切换其他持久层框架则难以扩展。也可测试性。

  • 顺理清楚上下文测试ServiceA, Mock serviceB

缺点:

  1. 强依赖mybatisPlus, 基类方法mock关系负载

解决方案:

  1. 定义ServiceB的业务逻辑方法后,在其中方法调用 ,则可以隔离。
    ServiceA不应该直接调用ServiceB派生的Dao方法

  2. 在ServiceA中引用DaoB的数据访问对象。

Summary

1. 在应用程序中,服务层起着至关重要的作用,因此编写针对服务层的单元和集成测试非常重要。在测试服务层组件时,需要考虑不同的测试类型和策略。使用适当的测试技术,可以确保服务层的代码质量,提高应用程序的整体稳定性和可靠性。

2. 单元测试用于测试单个组件或方法的功能。这些测试通常独立运行,不依赖于其他组件或服务。在Spring Boot中,可以使用JUnit和Mockito等框架编写单元测试。
集成测试则用于测试多个组件或服务之间的交互。这些测试验证整个系统的工作流程,而不仅仅是单个组件。在Spring Boot中,可以使用Spring Boot Test和Spring Integration Test等框架编写集成测试。
为了确保微服务的可靠性和稳定性,编写全面的单元和集成测试套件至关重要。这些测试可以帮助开发人员及早发现问题,并确保应用程序在实际环境中按预期工作。

3. Apache Commons LangApache Commons Lang是一个Java库,提供了许多帮助处理核心Java类的实用方法。这个项目的单元测试非常全面,可以作为单元测试的最佳实践示例。


今天先到这儿,希望对云原生,技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管管,团队建设 有参考作用 , 您可能感兴趣的文章:
领导人怎样带领好团队
构建创业公司突击小团队
国际化环境下系统架构演化
微服务架构设计
视频直播平台的系统架构演化
微服务与Docker介绍
Docker与CI持续集成/CD
互联网电商购物车架构演变案例
互联网业务场景下消息队列架构
互联网高效研发团队管理演进之一
消息系统架构设计演进
互联网电商搜索架构演化之一
企业信息化与软件工程的迷思
企业项目化管理介绍
软件项目成功之要素
人际沟通风格介绍一
精益IT组织与分享式领导
学习型组织与企业
企业创新文化与等级观念
组织目标与个人目标
初创公司人才招聘与管理
人才公司环境与企业文化
企业文化、团队文化与知识共享
高效能的团队建设
项目管理沟通计划
构建高效的研发与自动化运维
某大型电商云平台实践
互联网数据库架构设计思路
IT基础架构规划方案一(网络系统规划)
餐饮行业解决方案之客户分析流程
餐饮行业解决方案之采购战略制定与实施流程
餐饮行业解决方案之业务设计流程
供应链需求调研CheckList
企业应用之性能实时度量系统演变

如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:

作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 该文章也同时发布在我的独立博客中-Petter Liu Blog。文章来源地址https://www.toymoban.com/news/detail-710945.html

到了这里,关于ServiceA不应该直接调用ServiceB派生的Dao方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 调用多个NFT的代理合约应该怎么设计?

    需求:项目方由10个NFT合约,需要不定时的去某个合约中 转账/mint 特定的ID到特定用户。 粗笨方法:直接发起10笔交易,每次单独call 一个 合约 执行 转账操作 合约代理方案:直接实现一个代理合约,由该合约执行call,依次call外部的NFT合约执行转账/mint操作,此时,外部看的

    2024年02月02日
    浏览(7)
  • ES派生类的prototype方法中,不能访问super的解决方案

    1 下面的B.prototype.compile方法中,无法访问super 2 替代方法如下

    2024年02月14日
    浏览(12)
  • MyBatis - DAO 接口(Mapper.xml)支持方法重载吗?

    方法重载(Method Overloading)是指在同一个类中定义多个方法,它们具有相同的方法名但参数列表不同。 在 MyBatis 的 DAO 层接口中, 是允许方法重载的。 在 DAO 层接口中,可以根据不同的需求和条件定义多个方法,提供不同的查询或操作方式。 在 MyBatis 的 XML 映射文件中, 是

    2024年01月17日
    浏览(10)
  • restTemplate调用外部接口,调用返回307,用postman直接调用接口正常返回数据

    restTemplate调用外部接口,调用返回307,用postman直接调用接口正常返回数据

    restTemplate调用外部接口,调用返回307,用postman直接调用接口正常返回数据 结论:调用的接口路径后加/ postman 关掉自动重定向(filesettins把Automatically follow redirects关掉),调用也同样返回307了 在网上各种搜307,出来的结果都是什么重定向 getHeaders().getLocation().toString() 获得返回

    2024年02月03日
    浏览(38)
  • 微信小程序调用直接拨打电话功能

     我们在做小程序的时候,通常回显的电话号码,是要能调用拨打电话的接口,直接拨打电话的,那么如何调用直接拨打电话的接口呢,下面我就简单的记录一下。  1.index.wxml文件 2.index.js文件

    2024年02月12日
    浏览(17)
  • 【简单实用框架】【十大排序算法直接调用】【可移植】

    【简单实用框架】【十大排序算法直接调用】【可移植】

    ☀️博客主页:CSDN博客主页 💨本文由 萌萌的小木屋 原创,首发于 CSDN 💢 🔥学习专栏推荐:面试汇总 ❗️游戏框架专栏推荐:游戏实用框架专栏 ⛅️点赞 👍 收藏 ⭐留言 📝,如有错误请指正 📆 未来很长,值得我们全力奔赴更美好的生活✨ ------------------❤️分割线❤

    2024年02月07日
    浏览(7)
  • spring如何进行依赖注入,通过set方法把Dao注入到serves

    spring如何进行依赖注入,通过set方法把Dao注入到serves

    你在service层后面方法的这些:   最后我们执行一下 :  什么叫做依赖注入,serve应该于Dao的注入我就通过配置文件在容器中注把他注给他: 配置文件:  依赖注入有个简单方法,把properties那个子标签:  就是把这个子标签给省掉他: 1、如何引入,首先打开配置文件: 当我

    2024年02月12日
    浏览(8)
  • yolov8直接调用zed相机实现三维测距(python)

    yolov8直接调用zed相机实现三维测距(python)

    相关链接 此项目直接调用zed相机实现三维测距,无需标定,相关内容如下: 1.yolov5直接调用zed相机实现三维测距(python) 2. yolov4直接调用zed相机实现三维测距 3. Windows+YOLOV8环境配置 4.具体实现效果已在哔哩哔哩发布,点击此链接跳转 本篇博文工程源码下载(麻烦github给个星

    2024年04月11日
    浏览(15)
  • 【python VS vba】(3) 在python直接调用vba脚本

    【python VS vba】(3) 在python直接调用vba脚本

    目录 0 前言 1 VBA 内容 1.1  EXCEL这边VBA的内容 1.2 VBA的测试代码 2 python 调用 2.1 python 调用VBA的过程和结果 2.2 代码 前面写了这么多,没想到,其实py是可以直接支持VBA的 python的模块import xlwings,可以让python直接调用EXCEL工作簿文件里的VBA脚本 具体步骤如下 试验环境:C:UsersAd

    2024年02月06日
    浏览(14)
  • vue中调接口的方式:this.$api、直接调用、axios

    vue中调接口的方式:this.$api、直接调用、axios

    1. this.$api 在api文件下层级关系如下图: 在index.js下 在api.js 在componet/LeadershipScreen.js 在页面中使用 2.引用,然后直接调用 定义在api.js文件中 使用 3.axios(需要先安装axios) get post https://www.kancloud.cn/yunye/axios/234845 下面的比较好,推荐使用 4.配置request

    2024年01月21日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包