【问题标题】:Should I test functionality from gems? [closed]我应该测试 gems 的功能吗? [关闭]
【发布时间】:2013-12-17 14:15:43
【问题描述】:

我正在使用 Ruby on Rails 项目中的设计 gem,我想知道是否应该为它编写测试,或者只是假设所有第三方代码都经过了自己的正确测试。

如果我确实编写测试,我应该只进行集成测试还是添加几个控制器和模型测试是否合理?

【问题讨论】:

    标签: ruby-on-rails ruby testing rubygems tdd


    【解决方案1】:

    通常假设第三方代码总是经过测试。

    例如,如果您使用 ActiveRecord 创建 Rails 模型,则测试该调用没有意义

    Model.create!(foo: 'bar')
    

    创建属性foo 等于bar 的记录。否则,您的 Rails 应用程序最终将有大量重复的测试。

    但是,除了测试您自己代码的规范之外,测试您的代码与第三方库的集成是一个好习惯。

    请注意,集成这个词并不是指 Rails 使用它们的方式的集成测试。例如,如果您创建了一个自定义命名范围并编写了一个创建一些记录并测试命名范围仅返回预期记录的测试,严格来说这实际上是一个集成测试(尽管它在单元测试中被定义为单元测试Rails 项目的文件夹)。

    【讨论】:

      【解决方案2】:

      如果您要重载 Devise 控制器,那么您应该测试您正在使用的方法的所有功能。

      如果我们在谈论 Devise,那么我建议您进行一些集成 + 验收测试,因为 Devise 对用户不是很友好。 Devise 有很多问题,最终需要数小时的调试,这可以通过一些验收测试来解决。此外,如果您将 OmniAuth 与 Devise 结合使用,则必须进行测试。

      而且,编写这些测试对您很有用,这样有一天您可能会更改您的登录逻辑,然后您将无法在不测试的情况下运行您正在编写的代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-12
        • 2015-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-15
        相关资源
        最近更新 更多