【问题标题】:How to test creation of a Rack application using cucumber?如何使用 Cucumber 测试创建 Rack 应用程序?
【发布时间】:2014-01-31 06:45:11
【问题描述】:

我正在创建一个将生成 Rack 应用程序的 Ruby 命令行应用程序。我想测试创建的 Rack 应用程序是否是有效的 Rack 应用程序。我已经开始使用 Aruba 和 Cucumber 来测试 CLI 是否创建了正确的文件和目录结构,但现在我已准备好运行 rackup 并查看应用程序是否正常运行。如何让 Cucumber 和 Capybara 与这个新创建的应用程序交互?

【问题讨论】:

    标签: ruby cucumber capybara rack aruba


    【解决方案1】:

    为您的机架应用程序生成一个根页面,然后让水豚访问您认为是根路径的任何路径并验证该页面上的某种输出

    def response
       if request.path "/" 
          Rack::Response.new(render("index.html.erb"))  
       else 
          Rack::Response.new("Not Found", 404)
        end
    end
    

    机架启动时:@startup_output = "foo" 在你的根页面上生成某种输出<%= @startup_output %>

    水豚:

    visit('/')
    page.should have_content('foo')
    

    如果您需要让 capybara 启动应用程序,请尝试在测试中使用 rake 任务:

    system "rake rack:start"
    

    【讨论】:

    • 谢谢,这是一个开始,但我已经有了一个 Rack 应用程序,并且我已经通过 Aruba 致电 rackup。我认为这与 Capybara 的默认行为不同,因此它不知道在哪里可以找到这个新创建的 Rack 应用程序。我想我需要告诉 Capybara 加载 config.ru 文件,或者指定它正在运行的端口,但我不知道该怎么做。
    • 您不能只创建一个包含配置信息(端口号、路径等)的 YAML 文件并在该数据中加载 capybara 吗?然后你仍然可以在水豚测试中使用visit("#{CONFIG.root_url}")。我建议查看 YAML 上的 railscast (railscasts.com/episodes/85-yaml-configuration-revised),它可能会给你一些想法。祝你好运
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多