在Golang中模拟具有依赖项的结构

时间:2018-08-13 15:03:38

标签: unit-testing go testify

我看到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(这两个函数使用的第三方依赖项)以及一些其他与我无关的依赖项。

我如何嘲笑这个结构?

0 个答案:

没有答案