gpt4 book ai didi

ruby-on-rails-3 - 寻找使用 RSpec 的 Rails 3 集成/验收测试示例

转载 作者:行者123 更新时间:2023-12-04 14:05:25 24 4
gpt4 key购买 nike

关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

6年前关闭。




Improve this question




作为 php dev 和 rails newb 的很长一段时间,我一直试图掌握 tdd/bdd。有太多的工具和方法论,这可能是一项非常艰巨的任务。经过大量阅读后,我得出的结论是,这将是我首选的测试方法:

  • 没有 cucumber ,在我看来这只是一种不必要的复杂性。
  • 单元测试的 RSpec
  • RSpec/Capybara 用于集成/验收测试。
  • 不测试 Controller / View 。
  • 工厂女孩或工厂机械师。
  • 不要 mock 我自己的代码。

  • 作为一个完整的 BDD 新手,这可能有点偏离基础,所以请随时提供有关此测试“堆栈”的建议。

    不过,我真正要寻找的是使用这些工具的开源项目,我可以从中寻找灵感。

    教程也会受到赞赏,但我认为看到一个真实世界的项目实现所有这些想法会非常有帮助。

    最佳答案

    每个人似乎都有适合自己的测试方法。我的背景和你一样——长期的 PHP 开发人员不使用测试(但在开发时进行了大量的手动白盒测试)。我最近开始编写我的第一个生产级的、付费玩 Rails 应用程序。这是我在前三个月后的想法。

    我也发现 Cucumber 对我来说太复杂了,无法开始。我为此苦苦挣扎了太久,最后才意识到我离实际测试框架太远了。一旦我下降到纯 RSpec,事情就变得清晰多了。也就是说,既然我已经用健壮的测试套件编写了我的第一个应用程序,我想我可能会将 Cucumber 放入我的下一个 Rails 应用程序配方中,并且使用它进行集成测试时感觉更舒服,同时仍然使用 RSpec 进行单元测试。

    一旦我最终理解了这个过程,我就对 RSpec 产生了一种不健康的迷恋。运行这些测试并看到全部绿色真的很漂亮。实际上,看到红色甚至令人满意,因为它告诉我下一步该做什么。

    我使用默认的 Webrat 进行集成测试。我没有遇到任何 Webrat 无法解决的问题,但我也没有尝试过 Capybara,所以也许我只是不知道我的情况有多糟糕。

    我开始按照 Rails Tutorial Book 编写我的测试,其中作者说“由于我不偏向于对 View 或助手进行单独测试,我发现它们要么脆弱要么多余,所以我们的第一步是将它们移除。” (第 93 页,第 2 段)在编写了一堆辅助方法之后,我决定回去为所有这些方法编写单独的辅助测试。我仍在将我的 View 测试滚动到我的 Controller 测试中,但我可以看到在我的下一个项目中将它们分开。 FWIW,我认为您确实应该在某个级别为所有内容编写测试,即使您只是依靠 Controller 测试来运行您的 View ,和/或您的 View 测试来运行您的辅助方法。

    我在这个项目中使用 Factory Girl,我发现它非常有用且易于使用。我还没有尝试过机械师,但它似乎同样受欢迎。我要提到的一件事是,当我第一次开始编写我的工厂时,我还使用 FFaker gem 将随机内容生成到我创建的每个工厂对象中。起初这看起来不错,因为变量内容有时会让我找到我在开发中遗漏的东西(不过目前想不出一个好的例子),但这也意味着我不得不担心截断所有返回 FFaker 数据以适应模型中的长度约束。从长远来看,这被证明太笨拙,所以我删除了所有这些代码,并继续对我所有的工厂使用静态字符串,并且只对必填字段使用。然后当我想练习一个特定的领域时,我会在我的实际规范中这样做。 IMO,你的工厂应该只包含足够的数据来创建一个有效的对象,而不是更多。

    至于模拟,我只找到了几个需要模拟的地方,但也许我对 Rspec 太陌生了,不知道我做错了。

    最后,至于具体示例,只需在 GitHub 上查看包含测试的 Rails 应用程序或开源 Rails 项目即可。或者像我一样遵循 Rails 教程书。无论你决定做什么,尽可能接近金属开始,然后尝试不同的 gem /插件/等,如果你决定不喜欢结果,请始终确保可以取消更改。我发现尝试从一个完整的食谱开始(即吊带裤、蓝光特别版等)太难了。通过从原始 Rails 应用程序开始,我能够尝试不同的解决方案(回形针与载波、typus 与 rails_admin、clearance 与 devise 等),以查看哪些适合我的个人喜好。很明显,Rails 应用程序没有一个完美的配方,每个人的首选配方只是一种意见。

    关于ruby-on-rails-3 - 寻找使用 RSpec 的 Rails 3 集成/验收测试示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6392619/

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