• 首页
  • 博客
  • 项目
  • 留言墙

微信公众号

喜欢我的内容的话不妨关注公众号获取最新动态 🫶

© 2025 • 5km • Fork 自cali.so

首页博客项目留言墙
总浏览量 5.9万最近访客来自 Ashburn, US🇺🇸
  • 为什么要写测试? 🎯
  • 配置测试环境 ⚙️
  • 测试依赖
  • 配置测试数据库
  • 优化测试代码结构 🏗
  • 编写基础的 API 测试 🧪
  • 编写基础的 API 测试 🧪
  • 测试模型关系 🔗
  • 小结 📝
  • 推荐阅读
  • 源码获取
Vapor 教程系列 - 04 Web API 测试与稳定性验证
2024/11/16Vapor Web 开发

Vapor 教程系列 - 04 Web API 测试与稳定性验证

上一篇文章我们完成了模型关系的实现和相关 API 的开发,相信你已经掌握了如何构建具有完整数据关系的 Web API。现在我们面临一个新的挑战:如何确保这些 API 能稳定可靠地工作? 🤔 本文将带你学习如何为 TIL 应用编写和运行测试,确保代码质量和接口稳定性。

99次点击6分钟阅读
  • 第一部分:构建 Web API
    • 创建项目和设置数据库与路由
    • 实现基本 CRUD 操作与控制器封装
    • 进阶数据库模型与 API 实现
    • Web API 测试与稳定性验证
    • 异步编程与全面错误处理
  • 第二部分:制作简单的前端网页应用
  • 第三部分:数据校验、用户验证和授权
  • 第四部分:Vapor 的进阶使用
  • 第五部分:生产部署

上一篇文章我们完成了模型关系的实现和相关 API 的开发,相信你已经掌握了如何构建具有完整数据关系的 Web API。现在我们面临一个新的挑战:如何确保这些 API 能稳定可靠地工作? 🤔 本文将带你学习如何为 TIL 应用编写和运行测试,确保代码质量和接口稳定性。

为什么要写测试? 🎯

在开始写测试代码之前,我们先思考一个问题:为什么要写测试?想象一下以下场景:

  • 你刚刚修改了一段处理用户数据的代码,但不确定是否会影响到其他功能 😰
  • 你想重构某个 API 的实现,但担心会破坏现有的功能 😱
  • 你的应用即将发布,需要确保所有功能都能正常工作 🚀

这些场景都需要反复测试应用的功能。如果每次都手动测试,不仅耗时而且容易遗漏。而自动化测试可以帮助我们:

  • ✅ 快速验证代码修改是否影响现有功能
  • 🔄 支持频繁迭代和重构
  • 💪 增强代码质量和可维护性
  • 📝 通过测试用例记录 API 的预期行为

配置测试环境 ⚙️

测试依赖

首先需要看一下 Package.swift 中是否添加测试所需的依赖。Vapor 提供了 XCTVapor 模块用于测试,它基于 XCTest 框架并提供了一些便捷的测试工具。打开 Package.swift,可以找到 testTarget 部分,一般不需要我们添加:

配置测试数据库

每次运行测试都需要一个干净的数据库环境。我们使用 Docker 启动一个独立的测试数据库:

其中:

  1. vapor_username 和 vapor_password 继续使用之前的即可;
  2. 端口 5434 这个可以设置为其它,只要是端口没有被其它服务占用就好。

然后修改 configure.swift ,添加测试环境的配置:

优化测试代码结构 🏗

为了让测试代码更简洁易用,我们先创建一些辅助方法。在 Tests/AppTests 目录下创建以下文件:

Models+Testable.swift:

有了这些辅助方法,我们就可以更优雅地编写测试用例了。

编写基础的 API 测试 🧪

让我们从测试 Acronym 的基本 CRUD 操作开始。创建 Tests/AppTests/AcronymTests.swift:

有了这些辅助方法,我们就可以更优雅地编写测试用例了。

编写基础的 API 测试 🧪

让我们从测试 Acronym 的基本 CRUD 操作开始。创建 Tests/AppTests/AcronymTests.swift:

添加完代码后我们可以先运行测试一下试试效果:

  1. 找到编辑器——测试;
  2. 鼠标悬停在 AppTests,选择 Run Test 按钮。
运行测试

正常的话就会看到图片右下角运行测试通过的提示文本。

测试模型关系 🔗

接下来测试模型之间的关联关系,我们这里测试的是 User 和 Acronym 的关系。在 AcronymTests 中添加:

编写单元测试其实是比较枯燥的工作,目前 AI 撰写单元测试的能力已经很强了,经过测试,完全可以帮我们撰写 Vapor 的测试代码,使用 Github Copilot Edits 或者 Cursor 的 composer 都有很棒的效果。

AI 帮助写单元测试

小结 📝

本文我们学习了:

  1. 为什么测试对于 Web API 开发很重要
  2. 如何配置测试环境和数据库
  3. 如何编写和组织测试代码
  4. 如何测试基本的 CRUD 操作
  5. 如何测试模型之间的关联关系

通过编写完善的测试,我们可以:

  • ✅ 确保 API 功能符合预期
  • 🔄 安全地重构和优化代码
  • 💪 提高代码质量
  • 📝 为 API 提供活的文档

记住,"测试是开发的好朋友,不是累赘。" 希望通过本文的学习,你能够建立起对测试的正确认识,并在实际开发中灵活运用测试来提升代码质量! 💪

推荐阅读

  • Vapor 测试文档
  • Swift Package Manager 测试指南
  • XCTest 文档

源码获取

本文代码:s1-4.zip

下一篇文章我们将一起探索异步编程与错误处理,敬请期待! 👋

相关文章

Vapor 教程系列 - 05 异步编程与全面错误处理

2024/11/16Vapor Web 开发977分钟阅读

Vapor 教程系列 - 03 进阶数据库模型与 API 实现

2023/12/26Vapor Web 开发17327分钟阅读

Vapor 教程系列 - 02 实现基本 CRUD 操作与控制器封装

2023/10/24Vapor Web 开发20618分钟阅读