1

我在这里看到,你可以有一个名为 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(这两个函数使用的第三方依赖项)以及其他一些我不关心的依赖项。

我怎么能模拟这个结构?

4

0 回答 0