gpt4 book ai didi

ruby-on-rails - 如何通过 Nginx 服务器 + Thin on Rails 运行集成测试

转载 作者:行者123 更新时间:2023-11-28 20:53:28 25 4
gpt4 key购买 nike

我有一个 Rails 4 集成测试,它正在运行并在我说话时通过。它在 Ruby Thin 服务器上运行。现在,我已经配置了代理所有请求的 Nginx 服务器,我希望我的集成测试指向 Nginx 服务器并像直接在 Thin 上运行一样运行 服务器。

集成测试使用以下命令运行:

rake test:integration TEST=test/integration/login_test.rb

如何配置我的集成测试,以便它们可以运行并通过 Nginx 作为请求处理程序代理?

Old: Integration Test -> Thin Server                 (TESTS PASSING FINE !!!!)
New: Integration Test -> Nginx Server -> Thin Server (HOW TO CONFIGURE TESTS ????)

我的 Nginx 服务器已经启动并运行,名称为:www-mynginx-server.com

login_test.rb

require 'test_helper'

class LoginTest < ActionDispatch::IntegrationTest

setup do
@user = users(:admin)
end

test "login page is displayed on root path" do
delete '/signout'
get root_path
assert redirect?
assert_redirected_to '/signin'
follow_redirect!
assert_template :new
assert_template %r{\Adevise/sessions/new\Z}
assert_select "a[href=?]", users_path, count: 0
assert_select "input[id=?]", 'user_email', count: 1
assert_select "input[id=?]", 'user_password', count: 1
assert_select "input[value=?]", 'Log in', count: 1
end

end

最佳答案

只需在 nginx 中创建一个站点(可能是 /etc/nginx/sites-available/mysite - 取决于您的操作系统),使用代理(最小配置):

server {
listen 80;
server_name _;

location / {
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# replace your thin server port
proxy_pass http://127.0.0.1:3040;
}
}

启用网站:

ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/mysite

并重新加载 nginx:

/etc/init.d/nginx reload

修改服务器名称的方法有很多种。对于集成测试,您有几个 helpers可用,使用host!修改每个请求的服务器URI:

class LoginTest < ActionDispatch::IntegrationTest
setup do
host! 'www-mynginx-server.com'
#...
end
# ...
end

或者在spec_helper.rb中修改默认值:

before(:each) do
default_url_options[:host] = 'www-mynginx-server.com'
end

或环境变量 SERVER_NAMEDEFAULT_HOST 的定义将具有相同的效果(参见 the code ),例如:

ENV['SERVER_NAME'] = 'www-mynginx-server.com'

关于ruby-on-rails - 如何通过 Nginx 服务器 + Thin on Rails 运行集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35564416/

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