我打算为REST-ful API编写单元测试,我想知道我应该采用的方法。
我最关心的方面与数据库状态有关。我的理解是每个测试的测试目标的环境或初始状态应该是相同的,这意味着每个测试的数据库也应该是相同的。当我有一个繁重的数据库时,我如何实现这一目标?另外,如何处理数据库模式中的最终更改?
答案 0 :(得分:9)
问题是你想测试什么。您认为在最顶层的api层(即接收HTTP请求的层)会破坏什么?
通常编写单元测试restful-api听起来有点像矛盾;)根据定义,单元测试比使用入口点HTTP到数据库要小得多。听起来更多的是你的问题是基于如何编写大型测试(或接受,端到端测试)。
请注意,实施此类大型测试(端到端测试)需要付出高昂的努力:
根据我的经验,测试粒度的多样性是最重要的,因此我混合/组合方法:
也许您可以对要测试的特定用例提供更多输入,以便提供更多帮助?
答案 1 :(得分:5)
通常,在单元测试中,您尝试删除正在测试的单元(通常是函数/类/对象)之外的所有依赖项。在您的情况下(对于数据库)实现此目的的经典方法是通过使用模拟。 http://en.wikipedia.org/wiki/Mock_object
基本上,您实现了一个“FakeDatabase”,它共享返回已知值的实际数据库的API。