草庐IT

browser-testing

全部标签

unit-testing - 使用 Gomock 测试返回错误 : Expected call has already been called the max number of times

我正在使用Gomockhttps://godoc.org/github.com/golang/mock和模仿这个测试的源代码是:packagesqsimport("fmt""log""os""runtime""github.com/aws/aws-sdk-go/aws/session""github.com/aws/aws-sdk-go/aws""github.com/aws/aws-sdk-go/service/sqs""github.com/aws/aws-sdk-go/service/sqs/sqsiface")varsess*session.Sessionvarsvc*sqs.

testing - 我将如何在 go 中模拟对 ioutil.ReadFile 的调用?

我有以下功能:funcObtainTranslationStringsFile(pathstring)([]string,error){ifcontents,err:=ioutil.ReadFile(path);err!=nil{returnObtainTranslationStrings(string(contents))}else{returnnil,err}}我需要模拟ioutil.ReadFile,但我不确定该怎么做。可能吗? 最佳答案 如果你想模拟这个,有几种方法可以处理这个问题。第一个,也许是最简单的,是改变使用iout

unit-testing - 测试 assert.Equal 除了一个字段

我正在编写用于在数据库中读取/写入结构的测试,其中一个字段是在数据库中自动计算的时间戳。因此,当我编写结构时,它的时间戳为0,但当我从数据库中读取它时,时间戳具有实际值。我想比较这两个值但忽略自动计算的字段。可能吗? 最佳答案 在测试之前设置另一个“except”字段:now:=time.Now()expected:=SomeStruct{ID:123,Name:"Test",Timestamp:now,...}result,_:=db.Select(....)result.Timeestamp=nowif!reflect.Deep

unit-testing - 如何在构建期间运行 mockgen?

我已经开始使用gomock为单元测试创​​建模拟对象。Gomock要求我运行带有特定参数的mockgen命令,以便为模拟生成代码。每次被模拟的接口(interface)发生变化时,都需要再次执行此操作。因此,我认为让gobuild使用适当的参数运行mockgen可能是有意义的。有没有办法让gobuild在构建包之前运行脚本或shell命令?如果没有,您如何生成模拟并使它们保持最新? 最佳答案 我认为gobuild中不存在任何使这成为可能的钩子(Hook)。一种解决方案是使用make。您的Makefile可能类似于:.PHONY:bu

go - 'go build' 和 'go test' 可以有默认标签吗?

具体来说,我正在使用magick包,而我正在使用的功能决定了我总是需要使用“gm”构建标签来构建它。有没有一种方法可以默认声明该构建标记,以便我的项目的“构建”(或“构建测试”)将使用“gm”隐式构建magick? 最佳答案 不,他们不能。您要么必须在cmd行中键入它们,要么使用makefile。 关于go-'gobuild'和'gotest'可以有默认标签吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow

unit-testing - 我如何在单元测试中限制/门内存使用

有没有办法在golang的单元测试期间限制内存使用量/增长量?例如在java中,我们可以这样做:longbefore=Runtime.getRuntime().freeMemory()//allocateabunchofmemorylongafter=Runtime.getRuntime().freeMemory()Assert.AssertTrue(before-after(粗略地)断言我们没有使用超过100个字节。 最佳答案 使用Go基准测试来分析内存使用情况。例如:mem.go:packagememfuncmemUse(){v

unit-testing - 您如何为连接到授权帐户的库编写测试?

我正在编写一个使用gmailAPI的库。几乎每个功能都需要连接到gmailAPI并在所有需要进行身份验证的情况下正常工作。例如,这个库具有更改电子邮件标签的能力,因此为了测试它,我可以创建一个虚拟帐户、获取凭据并在收件箱中设置“测试电子邮件”、更改它们的标签并检查是否它们已正确更改,但第三方如何使用该gmail帐户执行单元测试?要使用它,他们需要访问该帐户,这将允许他们更改电子邮件标签(和其他内容)并使我的单元测试无效。我的另一个想法是即时生成一批测试电子邮件,然后在测试完成后删除它们的所有痕迹。这样每个运行测试的第三方都只能使用他们自己的测试帐户。我只是想知道是否有更标准的方法来做到

go - 如何使用 go test -run 运行特定的 golang 测试

我在这里做错了什么?我只想运行这个ConnectionPoolTest.TestNew,无论我尝试什么,我都会返回“没有要运行的测试”:gotest--check.list*.go|grepConnectioConnectionPoolTest.TestNew:gotest--runConnectionPoolTest*.gookcommand-line-arguments0.005s[noteststorun]:gotest--runConnectionPoolTest.TestNew*.gookcommand-line-arguments0.005s[noteststorun]

testing - 如何可靠地让项目在 go 中 Root ?

现在我使用runtime.Caller(0)结合path.Dir和filepath.Abs​​来获取到当前执行的文件并获取相对于它的项目根目录。假设我有一个这样的文件夹结构:$GOPATH/src/example.org/myproject$GOPATH/src/example.org/myproject/main.go$GOPATH/src/example.org/myproject/path$GOPATH/src/example.org/myproject/path/loader.go如果我想要我的项目根目录,我调用loader.go,它又通过runtime.Caller(0)获取

testing - Golang 测试标准输出

这个问题在这里已经有了答案:Howtotestafunction'soutput(stdout/stderr)inunittests(3个答案)关闭3年前。我正在尝试测试一些打印ANSI转义码的函数。例如//PrintalineinacolorfuncPrintlnColor(colorstring,a...interface{}){fmt.Print("\x1b[31m")fmt.Print(a...)fmt.Println("\x1b[0m")}我尝试使用Examples这样做,但他们似乎不喜欢转义码。有什么方法可以测试写入标准输出的内容吗?