我正在尝试为我已经创建的 REST API编写很好的单元测试。我有这个简单的结构:
ROOT/
config/
handlers/
lib/
models/
router/
main.go
config包含 JSON 中的配置和一个简单的config.go读取和解析 JSON 文件并填充Config结构的文件。handlers包含控制器(即 中描述的相应 METHOD+URL 的处理程序router/routes.go)。lib包含一些数据库、请求响应器和记录器逻辑。models包含要映射到 JSON 和 DB 的结构及其函数。最后router包含路由器和路由定义。
现在我正在搜索和阅读很多关于在 GO 中单元测试 REST API 的内容,并找到了或多或少令人满意的关于如何设置测试服务器、定义路由和测试我的请求的文章。一切都很好。但仅当您想测试单个文件时!
我现在的问题是如何为所有处理程序设置测试环境(服务器、路由、数据库连接)?随着办法找到这里(我觉得这很容易理解和执行),我有一个问题:要么我必须为每个处理器单独运行测试或我必须写所有的处理程序测试套件在短短的一个测试文件。我相信你明白这两种情况都不是很愉快(第一是因为我需要保留go test运行所有成功的测试,第二是因为拥有一个测试文件来覆盖所有处理程序函数将变得无法维护)。
到目前为止,只有当我将所有测试和初始化代码放入每个文件的一个 func 中时,我才成功(根据链接的文章),XYZhandler_test.go但我也不喜欢这种方法。
我想要实现的是一种setUp()或init()运行一次,第一次触发的测试使所有必需的变量全局可见并初始化,以便所有下一个测试都可以使用它们,而无需再次实例化它们,同时确保编译此安装文件只为测试...
我不确定这是否完全清楚,或者此类问题是否需要一些代码示例(除了文章中已经链接的内容,但我会添加您认为需要的任何内容,请告诉我!
缥缈止盈
噜噜哒
相关分类