# 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: 2023/8/31 1:07:14