gpt4 book ai didi

ruby-on-rails - 在 Rails API 中针对测试环境运行 Pact

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

只是在我的 Rails API 上使用 Pact,并注意到默认情况下开箱即用的 Pact 设置针对“开发”环境运行。

当我运行任务 (RAILS_ENV=test) 时,如何配置以在“测试”环境下运行而不必在命令行中指定它。无法在文档中轻松找到操作方法。

使用以下 gem:

pact (1.10.0)
pact-mock_service (0.12.1)
pact-support (0.6.0)

pact_helper.rb:

require 'pact/provider/rspec'

Pact.service_provider 'Auslan API Service' do
honours_pact_with 'Auslan Web App' do
# This example points to a local file, however, on a real project with a continuous
# integration box, you would use a [Pact Broker](https://github.com/bethesque/pact_broker) or publish your pacts as artifacts,
# and point the pact_uri to the pact published by the last successful build.
pact_uri './user-specs-user-api.json' # need to update this
end
end

Pact.configure do | config |
config.diff_formatter = :embedded
end

Pact.provider_states_for 'User-Specs' do
provider_state 'there are users already added inside the database' do
set_up do
user1 = User.create(email: 'abcd@a.au', first_name: 'Jane', last_name: 'Doe', password: 'abcd#1234')

# set the Auth token
token = Knock::AuthToken.new(payload: { sub: user1.id }).token
pacts = File.join(File.dirname(File.expand_path(__FILE__)), '../../user-specs-user-api.json')

Dir.glob(pacts).each do |f|
text = File.read(f)
output_of_gsub = text.gsub(/\"Authorization\"\s*:\s*\".+\"/) { "\"Authorization\": \"Bearer #{token}\"" }
File.open(f, "w") { |file| file.puts output_of_gsub }
end
end
end
end

谢谢,莫

最佳答案

我还没有编写任何代码来实现这种情况。加载应用程序的代码部分在这里:https://github.com/pact-foundation/pact-ruby/blob/master/lib/pact/provider/configuration/service_provider_dsl.rb#L16

如果您有一个句柄,您可以在配置中覆盖该应用程序,但我不记得如何使用 Rails 应用程序来实现这一点。也许您可以尝试一下 Rack 构建器,看看是否可以将任何环境变量传递给它。如果您能弄清楚如何去做,我很乐意接受 PR。

关于ruby-on-rails - 在 Rails API 中针对测试环境运行 Pact,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42128181/

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