小编Mar*_*142的帖子

Go Fiber 无法在单元测试中解析主体

我正式向 Stack Overflow 上的仁慈的撒玛利亚人喊一声叔叔。

我正在尝试使用模拟数据库对我的 GORM (Postgres) + Fiber API 进行单元测试。我有一个Card模型和一个CreateCardReqBodyPOST 请求正文的模型。为了设置测试,我创建一个随机CreateCardReqBody实例,将其编组为 JSON,然后将其传递到*httptest.Request. 处理程序使用 Fiber 的(*fiber.Ctx).BodyParser函数将请求主体“解组”为空Card结构。但是,当我运行应该通过的测试时,Fiber 抛出“无法处理的实体”错误。

以下是我的代码的相关部分;测试文件是本教程Fiber 关于 (*App).Test 方法的文档的组合。(我意识到代码可以清理;我只是想获得生命的证明,然后专注于修改:)

我做了一些事情来调试这个:我使用与测试相同的值发出了 Postman POST 请求,并且它有效。在测试本身中,我对CreateCardReqBody结构进行编组然后解组,这样就可以了。我已经三次检查了 JSON 字段的拼写是否匹配、结构字段是否已导出等。我还运行了 VSCode 调试器,bodyFiber.Ctx 中的字段对我来说看起来也是正确的。

我开始怀疑这是否与 Fiber 从测试请求和真实请求中解析正文的方式有关。我将非常感谢任何人能分享对此的见解!

模型定义

type Card struct {
gorm.Model

// Implicit Gorm foreign key to fleet ID
FleetID uint `gorm:"index"  json:"fleet_id" validate:"required,min=1"`

// Card provider's account number
ProviderAccountNumber string `json:"provider_account_number"` …
Run Code Online (Sandbox Code Playgroud)

json unit-testing go httptestingcontroller go-fiber

1
推荐指数
1
解决办法
2571
查看次数

标签 统计

go ×1

go-fiber ×1

httptestingcontroller ×1

json ×1

unit-testing ×1