评论嘲笑器和记录器en Go?
#教程 #生产率 #go #法国

照顾单位测试总是非常重要的事情,但也可以恢复非常长和/或完成。他到达某些情况下,我们发现自己有代码,如果要求它查看日志,我们必须检查它的唯一方法。 (尤其是在可以快速成为香肠公平的地方,但不幸的是,模拟的动态注入不存在)

所以今天我们将看到如何调整您的代码以依靠此问题并促进您的下一个单元测试。


添加新变量

简单地说,我们将在GO中使用已知技术来解决此问题,该问题是一个将包含对象或模拟器函数的变量

在每个软件包中,您可以相信一个log.go文件,您将添加以下代码:

var logger = log.New(os.Stderr, "", log.LstdFlags)

然后,您只会使用logger.Println(...)

使用它

但是此代码来自哪里?

此代码仅来自log书店中std变量的美味。从技术上讲,我们只是进行此变量重复,以便在需要时对其进行修改。


嘲笑

既然您拥有这些Crées的这些变量,那么嘲笑它就容易得多。

为此,我们将使用以下代码

var (  
    buff bytes.Buffer  
    MockLogger = log.New(&buff, "", log.LstdFlags)  
)

您可以看到模拟的美味佳肴几乎与记录器的美味相同。唯一的缺陷是,模拟使用缓冲区作为的地方。而且这种差异非常重要,因为正是我们将能够在此缓冲区中阅读以查看哪些日志被称为。

突然,在单元测试中,您必须澄清下一行,用模拟
替换logger

logger = mocks.MockLogger

和后面,您只需要用strings.Split(mocks.Buff.String(), "\n")中的日志中的日志中的内容来执行您的最后一个囊泡。


您可以看到,一切仍然很简单,但是允许您比以前更多。

无论如何,我希望它对您有帮助! ðº