【问题标题】:Cucumber + DBUnit (ruby)黄瓜 + DBUnit(红宝石)
【发布时间】:2014-05-12 10:46:40
【问题描述】:

有没有人为 ruby​​ 做过 Cucumber + DBUnit 设置? (我特别想将它与 Calabash 一起用于移动应用测试。)

理想情况下,听起来我应该能够在 Cucumber 中添加一个 @Before 钩子,这样我就可以在继续测试之前将我想要的测试数据加载到数据库中。否则在我看来,我无法进行数据驱动测试。

注意:我确实了解场景大纲,但我不是(仅)希望使用不同的参数运行我的测试 - 相反,我需要在运行测试之前将我的数据库置于已知状态。

提前致谢

【问题讨论】:

    标签: ruby cucumber dbunit calabash


    【解决方案1】:

    你考虑过给database_cleaner 一个机会吗?您可以设置 database_cleaner 以便它在每个测试或整个测试套件之前清理您的数据库。它也很好用with Cucumber

    【讨论】:

    • 非常感谢 Oto! (完全错过了你的回复,所以为延迟道歉)这基本上解决了我的一半问题 - 我可以用它来截断一些表格(这很好!我确实需要这个)但我也需要但找不到的是如何以“初始状态”预加载数据库,就像使用 DbUnit 一样...有什么想法吗?
    • 预加载数据库可以使用夹具、工厂或种子来完成。 Fixtures 和 seed 是静态文件 (YAML),当您运行测试套件时会读取它们,它们会使用初始数据填充您的数据库。工厂更先进一些,它们不仅可以构建数据库记录,还可以构建整个“对象”,即行为或数据可能不同的对象。如果您的数据是简单的检查装置,否则请使用工厂。如果您想要更准确的答案,您必须提供有关您的数据库/项目的更多信息......您的初始数据库状态有多复杂?
    • 再次感谢 Oto!感谢您指出它们之间的差异。固定装置主要用于 Rails 应用程序吗?我想我可以在一个普通的 ruby​​ 项目中使用它们(即没有 rails - 这是一个 calabash-ios 项目),我只需要弄清楚如何......
    • 好吧 - 我承认 - 我放弃了“正确”的方法来做这件事。我真的没有时间学习 ruby​​,所以我最终只是创建了一个我自己的标签'已经添加到我的一些 Calabash 测试中,并且使用 system() 命令从文件备份中恢复 mysql 数据库。我知道这不是很好,但现在已经足够了......:/
    • 来吧。它没有那么坏。是的,您可以使用固定装置,而无需在 Ruby 中使用 Rails。通常你会选择 ActiveRecord 或 DataMapper 已经构建了所有这些甜蜜的东西,这样你就不会重新发明轮子。然而,我越读你的问题越多,我觉得这个葫芦-ios 可能不是你真正需要的东西。您是否考虑过使用更原生的东西。像 XCTest、Spectra (github.com/specta/specta) 或 KIF (github.com/kif-framework/KIF) 之类的?
    猜你喜欢
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多