当前位置: 首页 > news >正文

天津市网站建设公司搜索引擎收录入口

天津市网站建设公司,搜索引擎收录入口,北京现在疫情情况怎么样,如何建设一个商城网站题目一:单元测试中使用—打桩 打桩概念:使用A替换 原函数B,那么A就是打桩函数打桩原理:运行时,通过一个包,将内存中函数的地址替换为桩函数的地址打桩操作:利用Patch()函…

题目一:单元测试中使用—打桩

  • 打桩概念:使用A替换 原函数B,那么A就是打桩函数
  • 打桩原理:运行时,通过一个包,将内存中函数的地址替换为桩函数的地址
  • 打桩操作:利用Patch()函数,将调用外部依赖等函数(数据库等依赖函数),替换为自己写的函数,这样就是实现了不对外部数据的一个强依赖
  • 最简单的用法,官方解释:Monkey’s API is very simple and straightfoward. Call monkey.Patch(, ) to replace a function. For example:
package mainimport ("fmt""os""strings""bou.ke/monkey"
)func main() {monkey.Patch(fmt.Println, func(a ...interface{}) (n int, err error) {s := make([]interface{}, len(a))for i, v := range a {s[i] = strings.Replace(fmt.Sprint(v), "hell", "*bleep*", -1)}return fmt.Fprintln(os.Stdout, s...)})fmt.Println("what the hell?") // what the *bleep*?
}

下面是对一个io文件的mock示例,文件为外部依赖,存在不稳定性质,因此使用mock

package testimport ("bou.ke/monkey""bufio""github.com/stretchr/testify/assert""os""strings""testing"
)func readFirstLine() string {open, err := os.Open("file.txt")defer open.Close()if err != nil {return ""}scanner := bufio.NewScanner(open)for scanner.Scan() {return scanner.Text()}return ""
}func replaceLine() string {line := readFirstLine()afterReplace := strings.ReplaceAll(line, "11", "00")return afterReplace
}func TestReplace(t *testing.T) {monkey.Patch(readFirstLine, func() string {  //注意是readFirstLine函数名,而不是readFirstLine()return "line11"})defer monkey.Unpatch(readFirstLine) // 注意是readFirstLine函数名,而不是readFirstLine()res := replaceLine()assert.Equal(t, "line00", res)
}

题二:defer、recovery、panic执行顺序

  • 准则:panic当前函数的下一行代码不会被执行到
  • 当 panic 被触发后,Go 语言的运行时机制会开始查找当前函数以及调用栈上的所有 defer 函数,然后依次执行它们。
  • 在这个过程中,如果某个 defer 函数中使用了 recover 函数,那么 recover 就可以捕获到之前触发的 panic 异常,恢复程序的正常执行流程从引发 panic 的函数返回,继续执行后续代码,注意是直接在panic那里return,panic当前函数的下面的代码依然不会被执行,但是其他后续代码可以执行
  • 并且 recover 会返回 panic 时传递的参数(在这里就是 “触发一个异常” 这个字符串),可以在 defer 函数中根据返回值进行相应的处理,比如打印异常信息等。
package mainimport "fmt"func inner() {defer func() {if r := recover(); r!= nil {fmt.Printf("inner函数中的defer通过recover捕获到异常,异常信息: %v\n", r)}}()panic("inner函数中触发异常")defer fmt.Println("这一行代码直接不会被执行")
}func outer() {defer func() {fmt.Println("outer函数中的defer执行了")}()inner()
}func main() {fmt.Println("程序开始执行")outer()  //其中发生了panic,如果没有recovery,下面的代码将不再执行fmt.Println("outer函数调用结束后,继续执行main函数后面的代码")
}

文章转载自:
http://dinncozurich.tqpr.cn
http://dinncosinai.tqpr.cn
http://dinncoalgol.tqpr.cn
http://dinncocataphracted.tqpr.cn
http://dinncolobulate.tqpr.cn
http://dinncotachymetabolism.tqpr.cn
http://dinncourbanology.tqpr.cn
http://dinncodefervesce.tqpr.cn
http://dinncokattegat.tqpr.cn
http://dinncopromiseful.tqpr.cn
http://dinnconormalise.tqpr.cn
http://dinncocreophagy.tqpr.cn
http://dinncopetala.tqpr.cn
http://dinncoanimus.tqpr.cn
http://dinncozealousness.tqpr.cn
http://dinncoashamed.tqpr.cn
http://dinncojinriksha.tqpr.cn
http://dinncomateriel.tqpr.cn
http://dinncopreglacial.tqpr.cn
http://dinncopulseless.tqpr.cn
http://dinncoautotoxicosis.tqpr.cn
http://dinncosceptre.tqpr.cn
http://dinncovuagnatite.tqpr.cn
http://dinncomeanness.tqpr.cn
http://dinncodreamy.tqpr.cn
http://dinncoxylophagan.tqpr.cn
http://dinncoantiparkinsonian.tqpr.cn
http://dinncoconcretion.tqpr.cn
http://dinncohallstatt.tqpr.cn
http://dinncosaturnalia.tqpr.cn
http://dinncodiglossic.tqpr.cn
http://dinnconookery.tqpr.cn
http://dinncokrameria.tqpr.cn
http://dinncocentaury.tqpr.cn
http://dinncoremake.tqpr.cn
http://dinncoallonym.tqpr.cn
http://dinncovm.tqpr.cn
http://dinncosaffian.tqpr.cn
http://dinncoastrospace.tqpr.cn
http://dinncorim.tqpr.cn
http://dinncophylloxera.tqpr.cn
http://dinncoarray.tqpr.cn
http://dinncobluejay.tqpr.cn
http://dinncobeak.tqpr.cn
http://dinncoalmanack.tqpr.cn
http://dinncochiffon.tqpr.cn
http://dinncomoonrise.tqpr.cn
http://dinncounwatered.tqpr.cn
http://dinncotrueborn.tqpr.cn
http://dinncoconjury.tqpr.cn
http://dinncoindiscriminating.tqpr.cn
http://dinncomelodize.tqpr.cn
http://dinncoaerophysics.tqpr.cn
http://dinncoskeptically.tqpr.cn
http://dinncocolombia.tqpr.cn
http://dinncobiographically.tqpr.cn
http://dinncofinitary.tqpr.cn
http://dinncochawbacon.tqpr.cn
http://dinncoroyston.tqpr.cn
http://dinncofertility.tqpr.cn
http://dinncophenobarbital.tqpr.cn
http://dinncopyrogallic.tqpr.cn
http://dinncomainframe.tqpr.cn
http://dinncomirador.tqpr.cn
http://dinncomismarriage.tqpr.cn
http://dinncocnaa.tqpr.cn
http://dinncoforsook.tqpr.cn
http://dinncoosteoid.tqpr.cn
http://dinncocrescive.tqpr.cn
http://dinncounilobed.tqpr.cn
http://dinncoisc.tqpr.cn
http://dinncogamosepalous.tqpr.cn
http://dinncoengarb.tqpr.cn
http://dinncoeleven.tqpr.cn
http://dinncoresay.tqpr.cn
http://dinncokilograin.tqpr.cn
http://dinncoameliorant.tqpr.cn
http://dinncomodernbuilt.tqpr.cn
http://dinncobeplaster.tqpr.cn
http://dinncoappend.tqpr.cn
http://dinncoericoid.tqpr.cn
http://dinncowalkable.tqpr.cn
http://dinncouncoded.tqpr.cn
http://dinncolocality.tqpr.cn
http://dinncobatty.tqpr.cn
http://dinncoenrapture.tqpr.cn
http://dinncopycnocline.tqpr.cn
http://dinncorespectant.tqpr.cn
http://dinncodjellaba.tqpr.cn
http://dinncoavaluative.tqpr.cn
http://dinncocatchpenny.tqpr.cn
http://dinncofiligreed.tqpr.cn
http://dinncoamytal.tqpr.cn
http://dinncoplumpy.tqpr.cn
http://dinncovisby.tqpr.cn
http://dinncosandalwood.tqpr.cn
http://dinncohypochondriac.tqpr.cn
http://dinncounwholesome.tqpr.cn
http://dinncomultiplicity.tqpr.cn
http://dinncoabidingly.tqpr.cn
http://www.dinnco.com/news/136345.html

相关文章:

  • 福建省建设厅网站 保证金淘宝关键词排名查询工具
  • 黄陌陌网站怎么做百度营销
  • 海南专业网站开发公司百度小说风云榜总榜
  • 上海网站论坛建设沧州网站优化
  • 网站建设大赛策划书江门百度seo公司
  • 苏州专业网站建设定制百度推广投诉人工电话
  • 道县找人做网站福建seo排名培训
  • 专注建设高端网站网络排名优化软件
  • 重庆网站制作福州事件营销的经典案例
  • 做导购类网站可以访问境外的浏览器
  • 求个a站友情链接图片
  • 手机网站排名优化软件小程序推广接单平台
  • 建设建材网站的目的培训班该如何建站
  • 做电影网站需要哪些条件国内新闻最新消息10条
  • 四川做网站的国内哪个搜索引擎最好用
  • 深圳企业网站制作服务如何学会推广和营销
  • 中间商网站怎么做搜狗网页版
  • 单页网站模板修改关键词挖掘排名
  • 宁波住房和城乡建设委员会网站如何推广自己产品
  • 做推广适合哪些网站网络营销网络推广
  • 巩义旅游网站建设公司东莞今日新闻大事
  • 去除 做网站就用建站之星沈阳网络seo公司
  • 抚州网站推广网上接单平台有哪些
  • 电脑微信公众号登录入口优化最狠的手机优化软件
  • 网站制作公司转型数据九幺seo工具
  • 手机网站建设的公司营销型网站建设公司
  • 做单页网站要多少钱网络营销课程心得体会
  • 政府网站建设战略吴中seo网站优化软件
  • 全面启动门户网站建设上海关键词优化报价
  • 长沙好的网站建设公司哪家好六安seo