发行依赖于单元测试数据的REST API

我受命为我的同事编写和维护的身份验证服务编写单元测试。 我获得了一套REST api,使我可以使用这种服务对用户进行身份验证并获得JWT令牌,更改用户的密码以及身份验证服务执行的所有常见操作。我选择了xunit框架来编写我的测试模块。 现在,每个单元测试应该与其他单元测试完全隔离,并且无论执行顺序如何,所有测试都应该能够通过。不过,我发现很难遵循这些做法:

1)我正在测试的一些REST api修改了数据库,这可能会引起恼人的副作用。例如:如果我测试api来更改用户密码并且以某种方式无法还原更改,那么除非我手动访问数据库以还原它,否则我将无法再通过这样的测试。

2)我无法并行运行所有测试,其中一些测试的速度并不快。另外,还会产生副作用,例如:如果我测试某个用户由于多次错误的登录尝试而被阻止,则必须确保我不使用同一用户来测试正常的登录,并且这种情况正变得越来越令人讨厌。测试数量在增加。另外,我必须等到锁定期结束后才能检查用户是否可以再次登录。

许多测试似乎相互耦合,所有测试似乎都过于依赖数据库的状态。我什至没有访问数据库的权限,所以我被迫要求服务的开发人员修改测试数据库以满足我的需求。 整个过程感觉很笨拙。当我无法模拟数据层时,构造单元测试的最佳实践是什么,而我所测试的高度依赖于数据?

我得出的结论是,正确的方法应该是以下方法:我的同事应该一直在直接针对他的后端模块编写单元测试,而无需通过Web api调用。这样,他可以轻松地模拟数据层,有效地将单元测试与数据库分离。只有到那时,也许我才能编写一些集成测试来测试REST api。我的结论不合理吗?

changsheng2 回答:发行依赖于单元测试数据的REST API

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3124452.html

大家都在问