当我跑go test,我的输出:
--- FAIL: TestGETSearchSuccess (0.00s)
Location: drivers_api_test.go:283
Error: Not equal: 200 (expected)
!= 204 (actual)
--- FAIL: TestGETCOSearchSuccess (0.00s)
Location: drivers_api_test.go:391
Error: Not equal: 200 (expected)
!= 204 (actual)
Run Code Online (Sandbox Code Playgroud)
但是在我go test再次运行之后,我的所有测试都通过了.
只有当我重置我的mysql数据库,然后go test第一次运行时,测试才会失败.
对于每个GET请求,我POST之前都会请求确保在数据库中创建数据.
谁能帮助我如何确保测试按顺序运行?那是POST请求在GET请求之前运行?
我明白,如果代码的结构使得它被编程为接口,那么模拟它是微不足道的; 但是,我正在使用一个我无法改变的代码库(这不是我的代码库),事实并非如此.
这个代码库是高度互联的,没有任何东西被编程到接口,只有结构,所以没有依赖注入.
结构本身只包含其他结构,所以我也不能这样做.我不相信我可以对方法做任何事情,并且存在的少数函数不是变量,所以我不知道将它们交换掉.继承在golang中不是一件事,所以这也是不行的.
在像python这样的脚本语言中,我们可以在运行时修改对象,也就是猴子补丁.在golang中我能做些什么吗?试图找出一些方法来测试/基准测试而不触及底层代码.