在Go [关闭]中测试负面情景的方法

问题描述 投票:2回答:1

我想知道在使用外部系统(例如数据库)时是否有一种接受/惯用的方法来测试意外行为。这些大多是“if err!= nil {...}”中的情况,通常情况下,错误不会发生,并且您不通过输入控制它。

一种“正确”的方法可能是定义一个接口和一个模拟结构,它会在你需要时返回错误。但是,如果我已经有大量的代码无法使用接口,那么仅仅为了测试几个场景而带来它们似乎很烦人。

那么有谁知道并使用不同的方法?例如,在动态语言(如php和js)中,函数/方法行为可以使用模拟库轻松覆盖,甚至可以手动覆盖,这在编写测试时非常有用。

testing go integration-testing
1个回答
4
投票

使用接口和自定义/模拟实现进行测试是实现此目的的方法。如果您想测试大部分代码,那么现在就可以进行切换。如果你不想测试你的大部分代码只是其中的一小部分,那么甚至对测试感到烦恼的重点是什么?他们不会保证你有任何东西,相反,他们会给你一个错觉 - “一切”都很好。

如果你不想使用和模拟接口,另一种方法是模拟数据库服务器本身,但让我们面对它,它会更加有效。

只需使用接口。重构永远不会太晚。从长远来看,这总是值得做的事情。

另请注意,您可以逐步“切换”。只需创建一个包含您要测试的代码所使用的功能的界面。您无需“触摸”其余代码。更改可测试代码以使用该界面,然后您可以在测试中进行模拟。在Go中这很容易。

© www.soinside.com 2019 - 2024. All rights reserved.