0

我将编写一个新端点来解锁域对象,例如:

../domainObject/{id}/unlock

在我应用 TDD 时,我首先开始编写 API 测试。当测试失败时,我将开始编写集成和单元测试并实现真正的代码。

在 API 测试中,我需要一个用于测试夹具设置的锁定域数据,以测试将创建的解锁端点。但是,系统上没有用于锁定域对象的端点。(我们的 Quartz 作业锁定数据)我的意思是,我需要直接使用数据库创建数据。

我知道在 API 测试中,直接使用数据库并不是最佳实践。如果您需要测试数据,您也应该调用 API。例如

../domainObject/{id}/lock

在这种情况下,这种情况应该是一个例外吗?还是我应该遵循其他任何做法?

谢谢。

4

1 回答 1

0

这里没有好的或坏的做法,这完全取决于您对包括数据库在内的系统的端到端测试的重视程度。

测试数据库部分将需要更多的基础设施,因为您必须使用内存数据库来更快地运行测试,或者在您的开发环境中设置一个成熟的永久测试数据库。在执行后者时,最好有一个单独的测试套件用于端到端测试,该测试套件的运行频率低于正常测试套件,因为它不可避免地会变慢。在这种情况下,您将在数据库中始终存在预先存在的测试数据,并且锁定的对象可以是其中之一。

如果您不关心这一切,您可以存根数据存储抽象(存储库、DAO 或其他)以返回固定锁定对象。

于 2016-06-27T11:54:00.263 回答