Rg s s 3 a:带有 *s3.S3对象的 Golang单元测试

关于Rg s s 3 a的问题,在golang unit test example中经常遇到, 我应该如何单元测试下面的代码。我试图使用 coutnerfiter 来伪造输入“* s3.S3”对象,但它不适合我。我是 coutnerfiter 和 Go 的新手,有人可以帮我吗?

我应该如何单元测试的代码。我试图使用 coutnerfiter 来伪造输入“* s3.S3”对象,但它不适合我。我是 coutnerfiter 和 Go 的新手,有人可以帮我吗?

func (l *listContentImp) ListS3Content(client *s3.S3) (bool, error) {
  listObj := &s3.ListObjectsV2Input{
    Bucket: aws.String(l.bucket),
  }
  var err error
  l.lObj, err = client.ListObjectsV2(listObj)
  if err != nil {
    return false, err
  }
  return true, nil
}
4

您不应该传递对s3.S3结构的引用。使用 AWS SDK for Go v1 时,通常会传递服务对应的接口。对于 S3,这是s3iface

你的函数的签名看起来像这样:

func (l *listContentImp) ListS3Content(client s3iface.S3API) (bool, error)

现在,您传递的每个结构都至少实现了s3iface.S3API的方法之一。

在运行时,你会通过适当的服务客户端,但在单元测试中,你可以通过一个模拟:

type mock struct {
    s3iface.S3API
    output *s3.ListObjectsV2Output
    err     error
}
func (m mock) ListObjectsV2(*s3.ListObjectsV2Input) (*s3.ListObjectsV2Output, error) {
    return m.output, m.err
}

在您的测试中,您创建模拟并将其传递给您的函数:

func Test_ListObject(t *testing.T) {
    l := &listContentImp{...}
    m := mock{
        output: &s3.ListObjectsV2Output{...},
        err: nil
    }
    result, err := l.ListS3Content(m)
    
    [... add checks here...]
}

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(696)
如何修改网页源代码:如何查看隐藏的网页源代码 (the hidden source)
上一篇
C++stringstream:将getline从cin读入 stringstream(C++)
下一篇

相关推荐

  • golang 编译构建高效可靠的应用程序

    Golang 编译是指将源代码编译成可执行文件的过程。Golang 使用 go tool 来完成编译,它可以将源代码编译成二进制文件,也可以将源代码编译成共享库文件。…

    2024-04-24 15:46:11
    0 94 10
  • golang 服务器:如何使用Golang构建高性能的Web服务

    Golang 服务器是一种高性能、可扩展的服务器,它使用 Google 开发的 Go 语言来构建 Web 应用程序和 API。它具有快速开发、高效运行、安全可靠等特点,可以帮助开发者更快地构建和部署应用程序。…

    2023-03-04 12:39:15
    0 96 27
  • golang测试断言函数的 nil返回失败

    我试图断言一个返回 nil 的函数,但我试图断言 nil,但下面的断言没有意义。我使用github.com/stretchr/testify/assert框架断言…

    2022-11-11 15:19:43
    0 63 36
  • 在 golang中定义一种新的时间类型

    我想有一个这样的结构:…

    2022-11-11 15:11:44
    0 40 76
  • javaapi文档:java.lang.String类

    Java API文档是一种文档,它提供了关于Java类库的详细信息,包括类、接口、方法和字段的定义以及它们之间的关系。它还提供了有关如何使用特定类或接口的示例代码,以及它们的功能和用法。…

    2023-02-18 14:13:40
    0 82 57
  • Copycheck查重:golang的copyCheck.check如何检测对象复制

    关于Copycheck查重的问题,在copying checker中经常遇到,golang 的copyCheck.check如何检测对象复制?…

    2022-11-28 05:08:31
    0 37 20
  • Int类型最大值:Go中 int类型的最大值(golang max int)

    关于Int类型最大值的问题,在golang max int中经常遇到,如何为unsigned整数类型指定可表示的最大值?…

    2022-12-20 05:05:20
    0 61 62
  • 66you网页游戏平台:GolangDataRace 退出状态为66

    关于66you网页游戏平台的问题,在exit 66中经常遇到,我有以下代码,并且我有数据竞赛 Round 函数定期检查运行该函数以删除地图的内容正如我在这里所读:Is it safe to remove selected keys from Golang map within a range loop?…

    2022-12-22 10:56:23
    0 18 56

发表评论

登录 后才能评论

评论列表(43条)