# How to ガイド - test lambda 用テストの作成
ここでは、test lambda のテストを作成する方法について説明します。
# サンプルコネクター
connector.rb
のコードを以下に示します。
{
title: 'Chargebee-demo',
connection: {
fields: [
{
name: 'api_key',
control_type: 'password',
hint: 'You can find your API key final change3' \
"under 'Settings'=>'Configure Chargebee'=>'API Keys and Webhooks'" \
" in Chargebee's web console.",
label: 'Your API Key'
},
{
name: 'domain',
control_type: 'subdomain',
url: 'chargebee.com'
}
],
authorization: {
type: 'basic_auth',
apply: lambda do |connection|
user(connection['api_key'])
end
},
base_uri: lambda do |connect|
"https://#{connect['domain']}.chargebee.com"
end
},
test: lambda do |_connection|
get('/api/v2/plans', limit: 1)
end,
}
settings.yaml.enc
に格納された資格情報です。
api_key: valid_api_key
domain: valid_domain
# テストの生成
workato new [PATH]
を使用してコネクタープロジェクトを生成した場合、プロジェクトにはすでにサンプルの connector_spec.rb
ファイルが作成されています。そうでない場合は、test
lambda のテストを保管するために、このファイルを作成する必要があります。
# サンプルの RSpec の内容
connector_spec.rb
のコードを以下に示します。
RSpec.describe 'connector', :vcr do
let(:connector) { Workato::Connector::Sdk::Connector.from_file('connector.rb', settings) }
let(:settings) { Workato::Connector::Sdk::Settings.from_default_file }
it { expect(connector).to be_present }
describe 'test' do
subject(:output) { connector.test(settings) }
context 'given valid credentials' do
it 'establishes valid connection' do
expect(output).to be_truthy
end
it 'returns response that is formatted properly' do
# large Test responses might also cause connections to be evaluated wrongly
expect(output.to_s.length).to be < 5000
expect(output['list']).to be_kind_of(::Array)
end
end
end
end
ここでは、test
lambda 用に2つのテストを定義しています。順を追って詳しく説明します。
# ステップ1 - コネクターインスタンスの定義
テストを開始するには、Workato SDK Gem を使用してコネクターのインスタンスを作成する必要があります。
let(:connector) { Workato::Connector::Sdk::Connector.from_file('connector.rb', settings) }
# ステップ2 - 設定インスタンスの定義
テストを開始するには、Workato SDK Gem を使用して設定のインスタンスを作成する必要があります。これは、Workato でのコネクションと同じことを意味します。前に定義したコネクターインスタンスも、この設定インスタンスを使うことに注意してください。
let(:settings) { Workato::Connector::Sdk::Settings.from_default_file }
別の設定ファイルから設定をインスタンス化するには、from_encrypted_file
または from_file
を使用できます。
let(:settings) { Workato::Connector::Sdk::Settings.from_encrypted_file('invalid_settings.yaml.enc') }
# ステップ3 - テストの説明と対象の定義
ここで、実行したいテスト「群」について説明します。ここではキーワードに test
を使います。その後に、テストの subject
(対象) も定義します。ここで、test
lambda を実行しているコネクターインスタンスに output
の値を割り当てます。これは connector.test(settings)
を定義することで行われます。
describe 'test' do
subject(:output) { connector.test(settings) }
# ステップ4 - 個々のテストに対するアサーションの宣言
テストの成功または失敗を判断するには、比較を宣言しておく必要があります。
ここでは、テスト「establishes valid connection」が成功するには、test
lambda の出力が truthy
(真値) になることを「expect (期待)」する、と宣言しています。
また、test
lambda の出力が5,000字未満であり、かつ list
属性が配列であることも「expect (期待)」しています。この両者が成功することで、テスト「returns response that is formatted properly」が成功します。
context 'given valid credentials' do
it 'establishes valid connection' do
expect(output).to be_truthy
end
it 'returns response that is formatted properly' do
# large Test responses might also cause connections to be evaluated wrongly
expect(output.to_s.length).to be < 5000
expect(output['list']).to be_kind_of(::Array)
end
end
# ステップ5 - RSpec テストの実行
最後のステップは、RSpec テストを実行することです。これは bundle exec rspec spec/connector_spec.rb
コマンドで実行します。
$ bundle exec rspec spec/connector_spec.rb
connector
is expected to be present
test
given valid credentials
establishes valid connection
returns response that is formatted properly
Finished in 0.04959 seconds (files took 1.04 seconds to load)
3 examples, 0 failures
Last updated: 2024/7/10 18:18:20