我看到on here,您可以使用一个名为Mockery的框架来为您的接口生成模拟。这几乎是一件大事,因为我已经在使用testify,它具有内置的模拟API(到目前为止,我还没有使用过)。
但是,缺点是它需要接口,而被测试的代码是具有嵌套依赖关系(包括业务逻辑和第三方代码)的结构。我不负责重构代码库(感谢上帝),并希望对此进行模拟
package context
//ApplicationContext The context to use if the use of an application is needed.
type ApplicationContext struct {
DatabaseContext
}
//GetAppId Gets the application id from the session.
func (c *ApplicationContext) GetAppId() int {
if str := c.GetFromSession("ApplicationId"); str != nil {
return str.(int)
}
return -1
}
//SetAppId Sets the application id into the session.
func (c *ApplicationContext) SetAppId(id int) {
c.SetToSession("ApplicationId", id)
}
扩展了DatabaseContext
,它具有Session.Store
(这两个函数使用的第三方依赖项)以及一些其他与我无关的依赖项。
我如何嘲笑这个结构?