草庐IT

test_nil_is_an_object

全部标签

go - 为什么是 "err != nil"?

这个问题在这里已经有了答案:Hidingnilvalues,understandingwhyGofailshere(3个答案)关闭7年前。我遇到这样一种情况,变量“errerror”的值只能是“nil”,但在重新分配后断言“(err==nil)==false”。示例代码如下:packagemainimport("fmt""log")typeTestErrorstruct{Messagestring}func(e*TestError)Error()string{returne.Message}funcNewTestError(errerror)*TestError{iferr==nil{

xml - <nil> 在golang中解析xml字符串时

我想使用golang解析xml。作为使用go的新手,我阅读了网上的文章,解释了如何解析XML,但我不确定为什么在这种情况下我的返回值为nil。packagemainimport("fmt"//"io/ioutil""encoding/xml")funccheck(eerror){ife!=nil{panic(e)}}typeBooksstruct{XMLNamexml.Name`xml:"Books"`BookList[]Book`xml:"Books>Book"`}typeBookstruct{titlestring`xml:"title,attr"`authorstringpubl

unit-testing - 从 %APPDATA% 开始单元测试

我正在尝试使用“gotest”运行我的一些Go单元测试,但测试可执行文件是从我机器的%APPDATA%/local/temp目录构建和运行的。我的PC有IT强制执行,它阻止任何无法识别的可执行文件运行,而不是从预先批准的目录(即C:/dev/projects")运行。我所有的Go源代码都在该目录中,包括我的*_test.go文件。有没有办法告诉Go测试模块从当前目录构建和运行? 最佳答案 Yesyoucan.在执行gotest之前设置临时目录。默认情况下,临时目录环境变量按照TMP、TEMP、USERPROFILE、Windows目

testing - 如何测试go中函数的返回值是指向类型的指针?

我在测试用例中突出显示了我希望某些东西应该去的地方。理想情况下,我想测试i是WHAT_SHOULD_I_PUT_HERE的一个实例主.gopackagemainimport"fmt"typeSomeTypestruct{thingThatNeedsSetupstruct{}}funcCreate()*SomeType{return&SomeType{}}funcmain(){a:=Create()fmt.Println(a.thingThatNeedsSetup)}main_test.gopackagemainimport("testing")funcTestCreate(t*test

unit-testing - 具有自定义 ServeHTTP 实现的 http 处理程序的 golang 单元测试

我正在尝试为我的http文件服务器编写单元测试。我已经实现了ServeHTTP函数,以便它在URL中用“/”替换“//”:typeslashFixstruct{muxhttp.Handler}func(h*slashFix)ServeHTTP(whttp.ResponseWriter,r*http.Request){r.URL.Path=strings.Replace(r.URL.Path,"//","/",-1)h.mux.ServeHTTP(w,r)}最低限度的代码如下所示:funcStartFileServer(){httpMux:=http.NewServeMux()httpM

unit-testing - 如何在不同的包中测试未导出的结构字段?

我有一个用工厂创建对象的包。结构具有未导出的字段,例如:packagefetchertypeGitFetcherstruct{uristring}我有另一个包,它解析一些配置文件,然后构建另一个使用上述对象的对象:packageconfigtypeSourcestruct{fetcherGitFetcher}我正在尝试测试我的config包。我想构建一些预期的对象,但由于我的测试在config中,而我的GitFetcher在fetcher中,我不能只创建对象我想要,例如:packageconfigexpected:=GitFetcher{uri:"example.com/repo.gi

unit-testing - 去单元测试找不到所需的文件

我在go中编写了一个单元测试,同一文件的init方法在项目的根目录中打开了一个文件。我遇到的问题是,当我运行测试时,测试包是不包含所需文件的根目录。如何告诉测试函数查看文件而不在测试文件的目录中创建重复文件?文件结构:main.go|+-helpers|+-data.go|+-data_test.gorequired_file.txt测试命令:gotestgithub.com/testproj/helpersdata.go中的代码:funcinit(){file,err:=os.Open("required_file.txt")iferr!=nil{log.Fatal(err)

unit-testing - 使 ioutil.ReadAll(response.Body) 在 golang 中抛出错误

出于某种原因,我似乎无法获取ioutil.ReadAll(res.Body),其中res是*http.Response由res,err:=hc.Do(redirectRequest)返回(对于hchttp.Client,redirectRequest*http.Request)。到目前为止的测试策略任何时候我在SUT中看到hc.Do或http.Request,我的直觉是启动一个假服务器并指向适当的申请说明。这样的服务器,对于这个测试,看起来像这样:badServer:=httptest.NewServer(http.HandlerFunc(func(whttp.ResponseWrit

go - 在 TestMain 中使用 testing.T

我想运行一些测试用例,需要启动GRPC模拟服务器。为此,我正在使用gomock库。要启动服务器,我必须将类型为testing.T的变量传递给此函数-gomock.NewController().由于这是对所有测试用例的一种初始化,我想在TestMain中执行此操作。但是TestMain只能访问testing.M那么我该如何处理这种情况呢?在TestMain中创建一个新的testing.T结构?会成功吗? 最佳答案 听起来您正在寻找BeforeEach模式。您无权访问TestMain中的testing.T对象,因为这是在测试套件运行前

objective-c - 为什么 Swift 函数定义语法是多余的?

在C/C++/Java/Go中,我们使用,来分隔参数:(aint,bint)在ObjectiveC中,我们使用:来表示参数::(int)a:(int)b在Swift中,我们必须同时使用:和,:(a:int,b:int)是否需要冗余? 最佳答案 Swift可能有外部和内部参数名称:(externalinternal:Int)如果没有独特的分隔符,会产生很多歧义。 关于objective-c-为什么Swift函数定义语法是多余的?,我们在StackOverflow上找到一个类似的问题: