草庐IT

test-network

全部标签

unit-testing - Golang Mocking - 类型冲突问题

我正在模拟一个DataStore及其获取/设置功能。我遇到的问题是:不能在EventHandler的参数中使用s(类型*MockStore)作为类型*datastore.Storage这是因为我的EventHandler函数需要传递一个*datastore.Storage作为参数类型。我想使用我创建的MockStore而不是真正的数据存储来测试(http测试)EvenHandler()。我正在使用golangtestify模拟包。一些代码示例typeMockStorestruct{mock.Mock}func(s*MockStore)Get()...funcEventHandler(w

unit-testing - App Engine 本地单元测试不同实例 [GO]

我在测试单独的方法时遇到问题,每个测试用例都在不同的实例和地址上运行。我正在寻找一种方法来设置API地址,以便在同一API服务器上执行测试。我假设此警告是问题的一部分。WARNING2015-11-0418:15:25,003devappserver2.py:779]DEFAULT_VERSION_HOSTNAMEwillnotbesetcorrectlywith--port=0此命令将设置API服务器,但我不能为测试做同样的事情...dev_appserver.py.--api_port55555 最佳答案 使用aetest.Ne

networking - 如何获取 (IPv4) net.IPNet 的广播地址?

是否有内置函数来计算net.IPNet结构的广播地址? 最佳答案 链接@Dsafds有答案。看在历史的份上,所以你不必自己通读线程。代码是MikioHara的,我做了一些小的修改。funclastAddr(n*net.IPNet)(net.IP,error){//workswhenthenisaprefix,otherwise...ifn.IP.To4()==nil{returnnet.IP{},errors.New("doesnotsupportIPv6addresses.")}ip:=make(net.IP,len(n.IP.T

unit-testing - 运行 Ginkgo 测试套件(在运行任何规范之前设置 BeforeSuite

我正在使用Ginkgo(和Gomega)包对Go(lang)RestAPI进行单元测试。我需要使用全局设置,这应该可以通过定义来实现var_=BeforeSuite(func(){...})然后每个规范(具体的_test.go)应该在这个全局设置之后运行。不幸的是我不能让这发生......我的套件文件名为handlers_suite_test.go我的第一个测试规范名称是cartContentsHandler_test.go.在我看来,Ginkgo按字母顺序运行测试文件,使得cartContentsHandler_test.go运行之前handlers_suite_test.go.我放

unit-testing - Golang - 多个包的有效测试

我想从我的应用程序执行所有测试,现在我用命令来执行:gotest./app/...不幸的是,它需要相当长的时间,尽管单个测试运行得非常快。我认为问题在于go在运行测试之前需要编译每个包(及其依赖项)。我尝试使用-i标志,它有点帮助,但我仍然对测试时间不满意。gotest-i./app/...gotest./app/...您是否知道如何有效地测试多个包。 最佳答案 这就是gotest的本质:它构建了一个特殊的运行时,其中包含要执行的附加代码(这就是它跟踪代码覆盖率的方式)。如果速度不够快,您有两个选择:1)使用bash工具编译包列表(

unit-testing - Golang中Stubb接口(interface)指针参数

假设我有一个将客户端ID映射到net.Conns(接口(interface))的存储。为了简单起见,它只是在其中隐藏了一个map并将map键作为参数。我想消除对值复制的需求,而且我来自Java领域,因此映射应该将id映射到net.Conn指针似乎是合乎逻辑的。typeStoragestruct{connsmap[int]*net.Conn}func(s*Storage)Add(idint,conn*net.Conn){s.conns[id]=conn}...methodsforinitialisingnewstorage,getting,deleting,maybegivinglist

testing - 为什么 Go 1.6.2 不搜索 vendor/包?

项目的结构是:.├──glide.yaml├──glide.lock├──bin├──pkg├──src└──vendor我正在使用Glide用于依赖管理,GOPATH是我项目根目录的位置(绝对路径解析为上面树中的.。)Glide似乎正确安装了依赖项,但是当尝试使用Go1.6.2运行测试时,我什至在失败之前查看vendor/文件夹也没有看到它:GOPATH=/home/charney/myprojectgotest-i...src/myapp/main.go:36:2:cannotfindpackage"golang.org/x/net/context"inanyof:/usr/loc

testing - 您如何构建用于在项目模块内进行测试的导入?

我试图了解如何将一个go项目构建为子模块,这些子模块存储在单独的源代码存储库中(在主机example.com上),但是当我这样做时,我不确定如何运行模块内的测试。以下示例中哪里出了问题,非常感谢您的帮助!!mkdir-psrc/example.com/john/toolecho"packagetool">>src/example.com/john/tool/book.goecho"">>src/example.com/john/tool/book.goecho"typeBookstruct{">>src/example.com/john/tool/book.goecho"Titlest

unit-testing - 在 golang 中重置 http 处理程序以进行单元测试

我正在golang中测试一个http服务器,除了一件烦人的事情外,一切看起来都很顺利。在某些时候,当我配置服务器时,在执行http.ListenAndServe之前,我使用http.Handle("/",myrouter)注册了一个处理程序,问题是在下面的测试中,当再次调用配置方法时,我收到以下panic:panic:http:multipleregistrationsfor/[recovered]我想在干净的环境中运行每个测试,但还没有找到拆除http.DefaultServeMux的方法,有没有一种方便的方法可以通过“无效”来做到这一点或者重新配置测试环境,以便每个测试都在新环境中

戈朗 : Is a network condition can make a net/http HandleFunc to panic?

想想我有一个关键函数,它应该全部运行或不运行。TakeMoneyFromSomeone()GiveMoneyToSomeoneElse()我的问题是:我可以相信Go函数在使用`net/http.HandleFunc时不会在第1行和第2行之间出现panic吗?(这两个函数在我的http处理程序中)我只关注网络问题。例如:如果客户端断开连接、超时或正文太长,或其他任何情况。有什么网络问题会使服务器在line1和line2之间崩溃?(那两条线不使用网络)如果答案是否。如果我尝试ResponseWriter.write到关闭连接的客户端,会发生什么情况。会不会panic?