gpt4 book ai didi

smalltalk - 使用 Smalltalk Seaside 测试数据的测试装置或等效物?

转载 作者:行者123 更新时间:2023-12-04 17:51:00 28 4
gpt4 key购买 nike

我一直在使用的 Seaside 应用程序中使用测试驱动开发,并且我的所有数据都存储为图像中的对象(而不是数据库)。

因此,当我运行我的测试时,我必须小心地在真实数据被测试数据破坏之前将其存储起来,如下所示:

ToDoTest>>setUp 
savedTasks := Task tasklist.
Task deleteAllTasks.

savedProjects := ToDoProject projectlist.
ToDoProject deleteAllProjects.

savedPeople := Person peoplelist.
Person deleteAllPeople.

和:
ToDoTest>>tearDown
Task tasklist: savedTasks.
ToDoProject projectlist: savedProjects.
Person peoplelist: savedPeople

当我的测试失败时,问题就出现了,他们当然会失败,这会弹出调试器,然后我可以修复,但是tearDown 并不总是被调用,所以我可能会丢失我的真实数据。

我确实将数据保存到文件中,所以这不是一个大问题,但它并不像我希望的那样流畅和自动化。

无论如何,我可以改进吗?

最佳答案

我不确定是否有可以完全解决问题的方案。真正的问题是该模型是全局性的。这很方便也很好,但在这种情况下很容易失败。因此,我会考虑将模型从全局模型更改为更本地化的变体,以便您可以仅出于测试目的创建模型,而不会干扰生产数据。

要在您当前的设置中修复它,您需要在某处添加一个 ensure: 块。确保块“确保”您执行某些操作,无论一切是否正常或发生错误。问题是你需要在测试之前和之后进行。

在这种情况下,我会在你自己的测试类中用类似的东西覆盖 TestCase>>#runCase

runCase
[ self saveRealModel.
super runCase ]
ensure: [ self restoreRealModel ]

关于smalltalk - 使用 Smalltalk Seaside 测试数据的测试装置或等效物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16256680/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com