我只是在寻找资深/更有经验的 Ruby/Rails 开发人员的答案,因为我认为这是一个更高级的问题。
我正在研究一个宝石,它为 AR 模型添加了一些行为。我必须针对许多不同的关联(has_many、habtm、has_one 等)测试它,并且我还必须测试为关联传递不同选项时的行为(例如:foreign_key)。现在有了所有这些不同的模型,我可以在数据库中使用同一个表,因为字段本身不需要更改,只需通过 has_many、belongs_to 等指定行为。请记住,有很多不同的选项,因此模型的数量非常大。
首先,出于可读性目的,我认为在测试本身旁边/中定义模型并不是一个坏习惯(如果我有多个使用相同模型的测试,那么我会将它们组合在一起并使用之前方法)。所以这是我的目标之一,如果您不同意,可以对此发表评论。
我不确定的第二件事是我想在所有测试中保持模型的简单/相同名称,例如“Task”,而不是 TaskWithManySubtasksAndForeignKey 或类似的丑陋的东西。问题是模型太多了,很难想出有意义和简单的名字。我不太确定这一点 - 使用相同的名称,因为它是一个常数,有点问题。我有一个代理类的解决方案,但我认为这不是最佳解决方案。我正在考虑使用像“taskModel”这样的变量(使用 let 方法),但它看起来有点冗长和不寻常。
想到的另一种选择,但我不确定是否可以轻松完成,是删除现有关联,然后定义一个新关联。所以例如添加一个has_many然后删除它,添加一个habtm ...
你会怎么做呢?