代码之家  ›  专栏  ›  技术社区  ›  Daniel Beardsley

如何测试ruby Mixin模块?

  •  12
  • Daniel Beardsley  · 技术社区  · 15 年前

    我想知道最好的测试方法

    这样更好吗 在你的混血儿所扩展的班级中, 或者只是测试真正的班级 在你的应用程序中显示和扩展?

    . 如果测试失败,可能是您的实现或您正在扩展的类发生了更改或损坏。如果使用存根类进行测试,您的测试可能会通过,但是 功能可能会被破坏 如果要扩展的类发生更改。

    1 回复  |  直到 15 年前
        1
  •  23
  •   John Hyland    15 年前

    我并不完全清楚你在问什么,但我会假设这是一个大致的问题,“如果我有一个类,我用一个模块扩展了这个类,我应该在哪里测试这个模块提供的功能?”

    就我个人而言,当我编写一个用作mixin的模块时,我会尽量确保它具有相当健壮的测试,独立于我可能最终计划将其混合到的任何类。通常,我会在测试套件中定义一个只扩展到模块的类,然后编写测试以确保测试类具有所有预期的功能(你可以在我的文章中看到这样的例子 Classy gem,它只是一个mixin模块的集合。)如果这个模块是为了扩展ActiveRecord或其他我无法控制的类,我会尽可能地定义一个ActiveRecord类并使用它,尽管在理想情况下,我会尽量使我的模块的功能与ActiveRecord的功能正交。

    如果对ActiveRecord的更改导致测试中断,那么就有一个问题:编写模块的目标是什么。如果您想让它对公众普遍可用和有用,那么您可能希望它与最新版本一起工作,并且那些失败的测试准确地报告了需要修复的bug。如果您只想让它与您在本地为自己的项目运行的任何版本一起工作,那么您只需对该版本运行测试,就不必担心它的更改。