【发布时间】:2017-09-20 12:01:38
【问题描述】:
我无法找到设置主机/端口以在 CircleCI 上进行测试的好方法
编辑 2 - 要求:
- 在 TEST_PORT(如果在 ENV 变量中可用)或默认端口 3000 上本地运行的 Rails 应用程序
- 我有基于会话的测试,所以神奇地从
localhost切换到127.0.0.1会导致测试失败 - 在我的 CircleCI 环境中,我将主机 www.example.com 映射到
127.0.0.1,我希望 Capybara 连接到该网站,而不是直接连接到 localhost/127.0.0.1 - 在我的 CircleCI 环境中,端口 80 被保留,因此 rails 应用程序必须在不同的端口(如 3042)上运行
- 一些集成测试需要连接到远程网站(抱歉还没有 VCR)
www.example-remote.com在端口 80
以前我的测试套件在 localhost:3042 上运行良好,但后来我意识到我在使用 session 的测试时遇到了问题:rails 应用程序本身在 localhost 上启动,但随后电子邮件被发送到 127.0.0.1 地址,这导致基于会话测试失败
我更改了以下配置
# feature/env.rb
Capybara.server_port = ENV['TEST_PORT'] || 3042
Rails.application.routes.default_url_options[:port] = Capybara.server_port
if ENV['CIRCLECI']
Capybara.default_host = 'http://www.example.com/'
end
# configuration/test.rb
config.action_mailer.default_url_options = {
host: (ENV['CIRCLECI'].present? ? 'www.example.com' : '127.0.0.1'),
port: ENV['TEST_PORT'] || 3042
}
# circle.yml
machine:
hosts:
www.example.com: 127.0.0.1
但现在我正在生成奇怪的电子邮件 URL,例如 http://www.example.com/:3042/xxx
是否有人使用自定义主机名在 circleCI 上管理工作配置?
编辑
水豚 2.13 导轨 5.0 黄瓜 2.4 CircleCI 1.x
【问题讨论】:
-
你用的是什么版本的水豚?
标签: ruby-on-rails cucumber capybara ruby-on-rails-5 circleci