Ruby Rspec selenium在从外部url返回后未将环境设置为development之后找不到数据
我在使用selenium使用rspec测试paypal授权时遇到了一个奇怪的问题。当从paypal返回我的站点时,它声称找不到具有该特定id的必要数据,但似乎找到了另一条数据。在测试中,我将数据打印到终端,它就在那里。当我在spec_helper中将环境更改为开发时(我知道这很糟糕),它起了作用 以下是错误:Ruby Rspec selenium在从外部url返回后未将环境设置为development之后找不到数据,ruby,rspec,selenium-webdriver,Ruby,Rspec,Selenium Webdriver,我在使用selenium使用rspec测试paypal授权时遇到了一个奇怪的问题。当从paypal返回我的站点时,它声称找不到具有该特定id的必要数据,但似乎找到了另一条数据。在测试中,我将数据打印到终端,它就在那里。当我在spec_helper中将环境更改为开发时(我知道这很糟糕),它起了作用 以下是错误: Couldn't find PaypalPreapproval with id=1 这是我控制器中的代码 def show user = User.find(params[:user
Couldn't find PaypalPreapproval with id=1
这是我控制器中的代码
def show
user = User.find(params[:user_id])
preapproval = PaypalPreapproval.find(params[:id])
preapproval.activate
send_welcome_message(user) if user.addresses.count == 1
end
导致错误的是paypalpreproval.find(params[:id]),尽管上面的行似乎能够找到具有该id的用户
这是我在spec_助手中使用的临时修复程序
if Capybara.current_driver == :selenium
ENV["RAILS_ENV"] ||= 'development'
else
ENV["RAILS_ENV"] ||= 'test'
end
有人有什么想法吗?我解决了。运行selenium时,它会随机生成一个端口号并启动该服务器。一旦您的测试运行到服务器外部(外部url),您的返回url需要包括运行测试服务器的端口。我将此添加到我的spec_助手中:
Capybara.server_port = 4000
我已经为我的基本url设置了一个环境变量
ENV['BASE_URL'] = "http://localhost:3000"
我只是把它指定为
ENV['BASE_URL'] = Rails.env.test? ? "http://localhost:4000" : "http://localhost:3000"
希望这能为其他人节省半天的调试时间