标签: httptestingcontroller

如何在 Angular 中测试管道中的多个请求?

我想测试在管道内完成的 3 个请求。简化示例:

    httpClient.get<Data[]>(testUrl)
      .pipe(
        mergeMap(() => range(0, 2)),
        mergeMap(() => httpClient.get<Data[]>(testUrl)),
      )
Run Code Online (Sandbox Code Playgroud)

我正在使用官方推荐: HttpTestingController。如果我一个接一个地收到请求,它就可以正常工作httpTestingController.match。然而,我真正的应用程序并不是这样编写的。它使用的是管道。

    let testData: Data[] = [
      { name: 'bob' }, { name: 'carol' },
      { name: 'ted' }, { name: 'alice' }
    ];

    // Make three requests in a row
    httpClient.get<Data[]>(testUrl)
      .subscribe(d => expect(d.length).toEqual(0, 'should have no data'));

    httpClient.get<Data[]>(testUrl)
      .subscribe(d => expect(d).toEqual([testData[0]], 'should be one element array'));

    httpClient.get<Data[]>(testUrl)
      .subscribe(d => expect(d).toEqual(testData, 'should be expected data'));

    // get all pending requests that match …
Run Code Online (Sandbox Code Playgroud)

testing unit-testing angular httptestingcontroller

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

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
查看次数