ハウツーガイド - コネクションのテストの記述

このページは機械翻訳により提供されています。翻訳内容と英語版に相違がある場合は、英語版が優先されます。

このセグメントでは、コネクションに関するコネクターのテストの記述方法について説明します。

サンプルコネクター

connector.rb内のコード。

ruby
{
  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内の認証情報。

yaml
api_key: valid_api_key
domain: valid_domain

テストの生成

workato new [PATH]を使用してコネクタープロジェクトを生成した場合、プロジェクトにはサンプルのconnector_spec.rbファイルがすでに含まれているはずです。 含まれていない場合は、test lambdaのテストを格納するためにこのファイルを作成する必要があります。

サンプルRSpecコンテンツ

connector_spec.rb内のコード。

ruby
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を使用してコネクターのインスタンスを作成する必要があります。

ruby
  let(:connector) { Workato::Connector::Sdk::Connector.from_file('connector.rb', settings) }

ステップ2 - 設定インスタンスの定義

テストを開始するには、Workato SDK Gemを使用して設定のインスタンスを作成する必要があります。 これはWorkato上のコネクションと同義です。 前に定義したコネクターインスタンスでも、この設定インスタンスが使用されることに注意してください。

ruby
  let(:settings) { Workato::Connector::Sdk::Settings.from_default_file }

代替の設定ファイルから設定をインスタンス化するには、from_encrypted_fileまたはfrom_fileを使用できます。

ruby
  let(:settings) { Workato::Connector::Sdk::Settings.from_encrypted_file('invalid_settings.yaml.enc') }

ステップ3 - テストの記述とsubjectの定義

ここでは、実行するテストの"family"を記述します。 この場合は、キーワードtestを使用します。 その後、テストのsubjectも定義します。 ここで、outputの値を、test lambdaを実行するコネクターインスタンスに割り当てます。 これは、定義されたconnector.test(settings)で行われます。

ruby
  describe 'test' do
    subject(:output) { connector.test(settings) }

ステップ4 - 個々のテストのアサーションの宣言

テストが成功または失敗するには、宣言された比較が必要です。

ここでは、test lambdaの出力がtruthyであることを"expect"し、テスト"establishes valid connection"を満たすように宣言しています。

また、test lambdaの出力が5000文字未満であり、そのlist属性が配列であることも"expect"します。 これにより、テスト"returns response that is formatted properly"を満たします

ruby
    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コマンドで行います。

shell
$ 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: