NJP*_*NJP 3 oracle unit-testing rspec ruby-on-rails
我正在尝试使用 Sequel gem 测试连接到远程 Oracle 数据库的 Rails 应用程序。由于用户需要登录才能使用该站点,因此我使用的是 WebMock。但是,由于 WebMock 停止了对外部源的所有请求,因此Sequel::DatabaseConnectionError: OCIError: ORA-12541: TNS:no listener每次运行测试时都会收到错误消息。我将如何模拟数据库连接?我应该尝试其他的东西吗?
我不确定要提供什么代码,所以这里有一些可能与可能的解决方案相关的片段:
database_connection.rb:
class DatabaseConnection
@@db = nil
def self.get_db
@@db ||= Sequel.connect(Settings.db.main.to_hash)
end
def self.db_query(query)
get_db[query]
end
end
Run Code Online (Sandbox Code Playgroud)
在spec_helper.rb:
require 'webmock/rspec'
WebMock.disable_net_connect!(allow_localhost: true)
RSpec.configure do |config|
config.before(:each) do
stub_request(:post, "/path/to/third/party").
with(:body => "request body").
to_return(:status => 200, :body => "", :headers => {})
end
# ... rest of the code
end
Run Code Online (Sandbox Code Playgroud)
相关宝石来自Gemfile:
gem 'rails', '4.0.2'
gem 'ruby-oci8', git: 'https://github.com/kubo/ruby-oci8.git'
group :development, :test do
gem 'rspec-rails', '~> 3.2.0'
end
group :test do
gem 'webmock' # 1.21.0
gem 'capybara' # 2.4.4
end
Run Code Online (Sandbox Code Playgroud)
Sequel 附带了一个模拟适配器,正是为了这个目的:
@@db ||= Sequel.connect('mock://oracle')
Run Code Online (Sandbox Code Playgroud)
有关如何使用模拟数据库的详细信息,请参阅文档:
http://sequel.jeremyevans.net/rdoc-adapters/classes/Sequel/Mock/Database.html http://sequel.jeremyevans.net/rdoc-adapters/classes/Sequel/Mock/Dataset.html
| 归档时间: |
|
| 查看次数: |
1775 次 |
| 最近记录: |