我在这里看到,你可以有一个名为 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)
}
其中 extends DatabaseContext
,它具有Session.Store
(这两个函数使用的第三方依赖项)以及其他一些我不关心的依赖项。
我怎么能模拟这个结构?