在Rails上,每个测试用例都会创建一个ActiveRecord事务,该事务允许测试所有内容,然后将数据库恢复到原始状态,而不必删除所有表,或任何可能影响播种器等的表。 是不是可以在Typeorm上做这样的事情? 从我所看到的,事务记录工作方式的主要问题是调用另一个方法不会使用创建的事务,但我希望我错过了其他一些实现它的方法。 / p>
谢谢!
答案 0 :(得分:0)
我的期望与您完全一样。来自Rails和Spring,我希望进行事务测试,而直接从Typeorm找不到解决方案。
在测试期间很难重用相同的事务,因为连接类总是为每个数据库命令或事务创建一个新的QueryRunner。深入研究TypeORM,我发现的解决方案是对创建查询运行器的方法进行猴子修补,以便在测试期间重用它。我创建了此库以在多个项目中重用此代码:https://github.com/viniciusjssouza/typeorm-transactional-tests。
答案 1 :(得分:0)
我知道这已经很晚了,但是我实际上也在研究一种可以在这里看到的解决方案:https://www.npmjs.com/package/typeorm-test-transactions
从我这边的免责声明是,您必须使用@Transactional()
装饰器,但是我喜欢这样使代码更简洁,而且您不必降低事务管理器的负担。
@viniciusjssouza我检查了您的解决方案,我真的很喜欢!很好笑,我想我们两个人同时遇到了相同的问题:P