gpt4 book ai didi

ruby-on-rails - 如何测试 ruby​​ Mixin 模块?

转载 作者:数据小太阳 更新时间:2023-10-29 06:40:55 24 4
gpt4 key购买 nike

我想知道测试 ruby mixin 模块 的最佳方法,在这种情况下用于 ActiveRecord 模型,但实际上这是一个适用于任何类的通用问题使用混合扩展。

尝试 stub 你的mixin正在扩展的类,还是只测试真实类在你的类中存在和扩展更好?应用程序?

Stubbing 会移除测试的外部依赖性,但它无法在真实情况下测试mixin。如果测试失败,则可能是您的实现或您正在扩展的类发生了更改或损坏。如果使用 stub 类进行测试,您的测试可能会通过,但如果您正在扩展的类发生更改,则功能可能会被破坏

意见?

最佳答案

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

就我个人而言,当我编写一个用作混入的模块时,我会尝试确保它具有相当可靠的测试,而不管我最终可能计划将其混入的任何类。通常我会在测试套件中定义一个类,它只扩展到模块,然后编写测试以确保测试类具有所有预期的功能。 (您可以在我的 Classy gem 中看到这方面的示例,它只是混合模块的集合。)如果该模块旨在扩展 ActiveRecord 或其他我无法控制的类,我将定义为尽可能使用 ActiveRecord 类并使用它,但理想情况下,我会尽量让我的模块的功能与 ActiveRecord 的功能正交。

如果对 ActiveRecord 的更改导致您的测试中断,那么您编写模块的目标是什么。如果您希望它普遍可用并对公众有用,那么您可能希望它与最新版本一起使用,而那些失败的测试会准确地报告需要修复的错误。如果您只希望它与您在本地为自己的项目运行的任何版本一起使用,那么您可以只针对该版本运行测试,而不必担心它会发生变化。

假设我可以控制混入的类,我可能不会在类的测试中过于广泛地测试模块的功能——这就是模块测试的目的。我会有一个或两个测试用例来确保它通常有效,并且我会测试任何特定的交互或特定于被测试类的复杂性,并且可能就此打住。

关于ruby-on-rails - 如何测试 ruby​​ Mixin 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2860919/

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