在具有繁杂依存关系的 go 框架中撰写单元测试时,应用以下方法:依赖注入:传递依赖项做为参数,以便于应用模拟完成更换具体依赖项进行检测。模拟:建立一个对象团本并修改其行为,以控制依赖项的举动。实战案例:应用依赖注入和模拟撰写单元测试,以防护具备繁杂依存关系的办法,保证代码质量和可扩展性。 内容来自zvvq,别采集哟
怎样在具备繁杂依存关系的 Go 框架中撰写单元测试
Go 架构通常具有复杂且相互依存的部件,这给单元测试带来了挑战。本文将介绍应用依赖注入和模拟技术对 Go 框架中的复杂编码开展单元测试技巧和良好实践。 zvvq.cn
依赖注入:
依赖注入是一种将依存关系做为参数传递给对象的方式。这允许我们快速地更换具体依存关系的模拟完成,以便检测。
`种类someTypestruct{
someDependencysomeType
}func(s*someType)someMethod(){ zvvq
s.someDependency.someMethod() copyright zvvq
} copyright zvvq
`模拟:
模拟是一种创建对象团本并在行为上进行调整的 technique。这允许我们在检测中操纵依存关系的举动。 内容来自zvvq,别采集哟
`包检测
zvvq
import(
zvvq.cn
"testing""github.com/golang
/mock/gomock" zvvq.cn
)funcTestSomeMethod(t*testing.t){
内容来自zvvq
ctrl:=gomock.NewController(t) 内容来自samhan
deferctrl.Finish()mockDependency:=mock_someType.NewMockSomeType(ctrl)
本文来自zvvq
some:=&someType{1
zvvq.cn
someDependency:mockDependency,
zvvq.cn
} 本文来自zvvq
//设定模拟期待
内容来自zvvq
mockDependency.EXPECT().someMethod().Return(nil)// 实行检测 copyright zvvq
some.someMethod() zvvq
}
内容来自samhan666
`实战案例: 内容来自zvvq,别采集哟
考虑下列包括繁杂依存关系的 Go 架构部件: zvvq.cn
`typeSomeServicestruct{ 本文来自zvvq
someRepositorysomeRepository 内容来自zvvq,别采集哟
someGatewaysomeGateway zvvq好,好zvvq
}func(s*SomeService)SomeMethod(){
s.someRepository.GetSomething() 内容来自samhan666
s.someGateway.SendSomething() zvvq
}
zvvq
`应用依赖注入和模拟,我们能撰写单元测试来防护服务里的方式:
内容来自samhan
`包检测 zvvq
import( copyright zvvq
"testing""github.com/golang/mock/gomock" 内容来自zvvq,别采集哟
)funcTestSomeMethod(t*testing.t){
ctrl:=gomock.NewController(t) 本文来自zvvq
deferctrl.Finish()mockRepository:=mock_someRepository.NewMockSomeRepository(ctrl) zvvq.cn
mockGateway:=mock_someGateway.NewMockSomeGateway(ctrl)
service:=&SomeService{1 内容来自zvvq
someRepository:mockRepository,
内容来自zvvq,别采集哟
someGateway:mockGateway,
}
//设定模拟期待 zvvq
mockRepository.EXPECT().GetSomething().Return(nil)
zvvq.cn
mockGateway.EXPECT().SendSomething()//实行检测
内容来自samhan666
service.SomeMethod() zvvq
}
zvvq好,好zvvq
`根据使用依赖注入和模拟,大家可以轻松地对具有繁杂依存关系代码开展单元测试,进而提升编码质量以及可扩展性。 内容来自zvvq,别采集哟
以上就是如何对golang框架中具备繁杂依存关系代码开展单元测试?的详细内容,大量请关注其他类似文章!