(八)RestAPI 毛子(Unit Testing/Integration)


文章目录

  • 项目地址
  • 一、Unit Testing
    • 1.1 创建X unit 测试项目
      • 1. 创建项目目录
      • 2. 管理包
    • 1.2 创建CreateEntryDtoValidator测试
    • 1.3 创建CreateEntryDtoValidator测试
  • 二、Integration test
    • 2.1 创建Integration test环境
      • 1. 安装所需要的包
    • 2.2 配置基础设置
      • 1. 数据库链接DevHabitWebAppFactory
      • 2.创建测试共享类IntegrationTestCollection
      • 3. 注入登录用户
    • 2.3 添加测试用例
      • 1. 测试用户创建
      • 2. 测试添加Habits
    • 2.4 测试外部服务/微服务
      • 1. 安装所需要的包
      • 2. 修改DevHabitWebAppFactory
      • 3. 修改github的网址到配置里


项目地址

  • 教程作者:
  • 教程地址:
  • 代码仓库地址:
  • 所用到的框架和插件:
dbt 
airflow

一、Unit Testing

  • 适合单元测试的代码

在这里插入图片描述

1.1 创建X unit 测试项目

1. 创建项目目录

  • 创建测试
    在这里插入图片描述
  • 目录
    在这里插入图片描述

2. 管理包

  1. 修改Packages.props
    在这里插入图片描述
  2. 修改项目本身的包,并且添加项目引用到api项目
<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><IsPackable>false</IsPackable></PropertyGroup><ItemGroup><PackageReference Include="coverlet.collector" /><PackageReference Include="Microsoft.NET.Test.Sdk" /><PackageReference Include="xunit" /><PackageReference Include="xunit.runner.visualstudio" /></ItemGroup><ItemGroup><ProjectReference Include="..\DevHabit\DevHabit.Api\DevHabit.Api.csproj" /></ItemGroup><ItemGroup><Using Include="Xunit" /></ItemGroup></Project>
  1. 在api的项目配置中添加,我们就可以引用internal 类型在Unitest里
    在这里插入图片描述

1.2 创建CreateEntryDtoValidator测试

  • 创建CreateEntryDtoValidatorTests用来测试
    在这里插入图片描述
namespace DevHabit.UnitTests.Validators;
public class CreateEntryDtoValidatorTests
{private readonly CreateEntryDtoValidator _validator = new();[Fact] // 用来定义不带参数的独立测试public async Task Validate_ShouldSucceed_WhenInputDtoIsValid(){// Arrangevar dto = new CreateEntryDto{HabitId = Habit.NewId(),Value = 1,Date = DateOnly.FromDateTime(DateTime.UtcNow)};// ActValidationResult validationResult = await _validator.ValidateAsync(dto);// AssertAssert.True(validationResult.IsValid);Assert.Empty(validationResult.Errors); //通过验证,错误列表为空}[Fact]public async Task Validate_ShouldFail_WhenHabitIdIsEmpty(){// Arrangevar dto = new CreateEntryDto{HabitId = string.Empty,Value = 1,Date = DateOnly.FromDateTime(DateTime.UtcNow)};// ActValidationResult validationResult = await _validator.ValidateAsync(dto);// AssertAssert.False(validationResult.IsValid); //验证失败ValidationFailure validationFailure = Assert.Single(validationResult.Errors); //检查错误列表里应该有且只有一个错误Assert.Equal(nameof(CreateEntryDto.HabitId), validationFailure.PropertyName); //验证这个错误是针对 HabitId 字段的}
}

1.3 创建CreateEntryDtoValidator测试

  • 为加密服务创建测试

public sealed class EncryptionServiceTests
{private

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/903881.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式--桥接模式详解

桥接模式&#xff08;bridge pattern&#xff09; 桥接模式时将抽象部分与它的实现部分分离&#xff0c;使他们可以独立的变化。它是一种对象结构型模式&#xff0c;又称为柄体&#xff08;Handle and Body&#xff09;模式或者接口&#xff08;interface&#xff09;模式&…

关于 live555延迟优化之缓存区优化“StreamParser::afterGettingBytes() warning: read”” 的解决方法

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/146354088 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

Vite 动态导入静态资源与自动依赖发现实战解析

一、Vite 动态导入静态资源的实现方案 在 Vite 中&#xff0c;动态加载图片、JSON 等静态资源是高频需求&#xff0c;但动态路径拼接可能导致构建失败或资源未识别。以下结合示例代码&#xff0c;分析三种实现方案&#xff1a; 1. 方案一&#xff1a;new URL 动态路径转换 通…

在matlab中使用UAV123官方toolkits测试自己的数据集

一、前言 最近需要将自己的跟踪代码在自己拍摄的数据集上进行测试&#xff0c;这里我选择使用 UAV123 官方 toolkits 进行配置。首先需要搞清楚这部分代码是如何运行的&#xff0c;精度图和成功率图是如何绘制出来的&#xff0c;然后再将自己的数据集加进去进行测试。 二、UA…

9.idea中创建springboot项目_jdk1.8

9. idea中创建springboot项目_jdk1.8 步骤 1&#xff1a;打开 IntelliJ IDEA 并创建新项目 启动 IntelliJ IDEA。在欢迎界面&#xff0c;点击 New Project&#xff08;或通过菜单栏 File > New > Project&#xff09;。 步骤 2&#xff1a;选择 Maven 项目类型 在左侧…

SpringAI实现AI应用-搭建知识库

SpringAI实战链接 1.SpringAl实现AI应用-快速搭建-CSDN博客 2.SpringAI实现AI应用-搭建知识库-CSDN博客 概述 想要使用SpringAI搭建知识库&#xff0c;就要使用SpringAI中的TikaDocumentReader&#xff0c;它属于ETL&#xff08;提取、转换、加载&#xff09;框架中的提取&…

内网服务器映射到公网上怎么做?网络将内网服务转换到公网上

如何将内网映射到公网&#xff1f;本地局域网的网络下部署的内网服务地址转换到公网上连接访问是大家比较关注的问题&#xff0c;特别是在无公网IP使用的情况下&#xff0c;很多人不知道怎么做。 在没有公网 IP 的情况下&#xff0c;要将内网映射到公网&#xff0c;以便外网能…

intellij idea最新版git开启Local Changes

习惯了在idea的git插件里&#xff0c;查看项目已修改的文件&#xff0c;但是新版idea默认不展示了&#xff0c;用起来很难受。 参考网上教程开启方法如下&#xff1a; 1. 确保安装Git Modal Commit Interface插件并开启该插件 2. 在Advanced Settings开启Use Modal Commit In…

​​智能制造中的预测性维护:基于深度学习的设备故障预测​​

智能制造中的预测性维护:基于深度学习的设备故障预测 引言 在智能制造领域,设备突发故障可能导致巨大的经济损失。传统维护方式(如定期检修或事后维修)往往效率低下且成本高昂。预测性维护(Predictive Maintenance, PdM)通过实时监测设备状态并预测潜在故障,能够显著减…

DeepSeek+即梦:AI视频创作从0到1全突破

目录 一、开启 AI 视频创作大门&#xff1a;前期准备1.1 注册与登录1.2 熟悉工具界面1.3 硬件与网络要求 二、用 DeepSeek 构思视频脚本2.1 明确创作主题与目标2.2 编写优质提示词2.3 生成并优化脚本 三、即梦 AI 实现画面生成3.1 文生图基础操作3.2 调整参数提升画质3.3 保持人…

初始化列表详解

1.类中包含以下成员&#xff0c;必须放在初始化列表位置进行初始化&#xff1a; 1. 引用成员变量 2.const成员变量 3. 自定义类型成员(且该类没有默认构造函数时 ) 2. 成员变量在类中声明次序就是其在初始化列表中的初始化顺序&#xff0c;与其在初始化列表中的先后次序无关…

基于建造者模式的信号量与理解建造者模式

信号量是什么&#xff1f; AI解释&#xff1a;信号量&#xff08;Semaphore&#xff09;是操作系统中用于 进程同步与互斥 的经典工具&#xff0c;由荷兰计算机科学家 Edsger Dijkstra 在 1965 年提出。它本质上是一个 非负整数变量&#xff0c;通过原子操作&#xff08;P 操作…

开闭原则(OCP)

非常棒的问题&#xff01;&#x1f50d; 开闭原则&#xff08;OCP, Open/Closed Principle&#xff09;是软件设计的核心原则之一&#xff0c;下面我将从定义、意义、优劣分析、Python示例和结构图五个方面完整解析给你。 &#x1f9e0; 什么是开闭原则&#xff1f; 开闭原则&a…

python数据分析(七):Pandas 数据变形与重塑

Pandas 数据变形与重塑全面指南 1. 引言 在数据分析过程中&#xff0c;我们经常需要将数据从一种结构转换为另一种结构&#xff0c;以适应不同的分析需求。Pandas 提供了丰富的数据变形与重塑功能&#xff0c;包括旋转(pivot)、堆叠(stack)、融合(melt)等多种操作。本文将详细…

Android学习总结之jetpack组件间的联系

在传统安卓开发中&#xff0c;UI 组件&#xff08;Activity/Fragment&#xff09;常面临三个核心问题&#xff1a; 生命周期混乱&#xff1a;手动管理 UI 与数据的绑定 / 解绑&#xff0c;易导致内存泄漏&#xff08;如 Activity 销毁后回调仍在触发&#xff09;。数据断层&am…

C++初阶:类和对象(二)

大家好&#xff0c;我是小卡皮巴拉 文章目录 目录 一.运算符重载 1.1 基本概念 定义 参数规则 特性 选择原则 重载要点 二.类的默认成员函数 2.1 构造函数 构造函数的特点 2.2 析构函数 析构函数的特点 2.3 拷贝构造函数 拷贝构造的特点 2.4 拷贝赋值运算符重…

【c++】【STL】priority_queue详解

目录 priority_queue的作用priority_queue的接口构造函数emptysizetoppushpopswap priority_queue的实现仿函数&#xff08;函数对象&#xff09;是什么&#xff1f;向上调整算法&#xff08;adjustup&#xff09;向下调整算法&#xff08;adjustdown&#xff09;迭代器构造pus…

测试——用例篇

目录 1. 测试用例 1.1 概念 2. 设计测试用例的万能公式 2.1 常规思考逆向思维发散性思维 2.2 万能公式 3. 设计测试用例例的方法 3.1 基于需求的设计方法 ​编辑 3.2 具体的设计方法 3.2.1 等价类 3.2.2 边界值 3.2.3 正交法 3.2.4 判定表法 3.2.5 场景法 3.2.6…

销售总监求职简历模板

模板信息 简历范文名称&#xff1a;销售总监求职简历模板&#xff0c;所属行业&#xff1a;其他 | 职位&#xff0c;模板编号&#xff1a;KREUNY 专业的个人简历模板&#xff0c;逻辑清晰&#xff0c;排版简洁美观&#xff0c;让你的个人简历显得更专业&#xff0c;找到好工作…

AE脚本 关键帧缓入缓出曲线调节工具 Flow v1.5.0 Win/Mac

Flow是一个非常好用的After Effects脚本,它可以让你更加轻松自如地调整关键帧的速度曲线,无需触碰老旧复杂的图形编辑器。 AE脚本介绍 Flow为After Effects带来了一个简洁的界面,使自定义动画曲线变得十分容易,无需深入研究速度和影响力这些让人困惑的概念 - 只需绘制一个曲线…