1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WorkatoAdvent Calendar 2024

Day 1

Workato:Connector SDKのメソッドの単体テスト手順

Last updated at Posted at 2024-12-02

はじめに

WorkatoのConenctor SDKには構造化プログラミング言語のfunctionに相当する機能(メソッド)が用意されています。

メソッドを利用することで、目的ごとに処理を分割できる、1つの処理を複数の処理から呼び出して利用できる、コードの重複や冗長化を避けられる等のメリットがあります。何らかのコードを書いた経験のある方であれば、これらのメリットについて改めて説明する必要もないでしょう。

Connector SDKにおける単体テスト

WorkatoのConnector SDKには、トリガーとアクションを単体でテストできる機能が用意されています。

この機能を利用することで、次のようにトリガーあるいはアクションごとにWebの開発環境上で単体テストを行うことが可能です。テストのためにレシピを用意する必要もなく、その場でテストが実行でき、その結果を確認できることは、効率的に開発を進める上でもメリットになります。

image.png

Connector SDKにおけるメソッドの単体テスト

先に記載した通り、WorkatoのConnector SDKでは、Webの開発環境上でトリガーとアクションを単体テストすることが可能ですが、メソッドのための単体テスト機能は提供されていません。

※Workato SDK CLIではメソッドの単体テストは可能ですが、Webの開発環境上ではメソッドの単体テストを行うための機能は提供されていません。

このため、メソッドの単体テストを行いたい場合は、デバッグ用のアクションをエントリーポイントとして用意し、そのアクションを介してメソッドを実行する方法で対応します。

次項でコード例を示したうえで、手順を説明していきます。

コード例

以下はカスタムコネクタのコードの一例になります。

{
  title: "testapp",
  connection: {
    fields: [],

    authorization: {
      type: "custom_auth",
      apply: lambda do |connection|
      end
    },

    base_uri: lambda do
      ""
    end
  },

  test: lambda do |_connection|
  end,

  object_definitions: {},

  custom_action: true,

  actions: {},

  triggers: {},

  pick_lists: {},

  methods: {
    hello_world: lambda do |input|
      {
        result: 'hello ' + input['value1'] + ' ' + input['value2'] + ' ' +input['value3']
      }
    end,
    hello_world2: lambda do |input|
      {
        result: 'hello ' + input['value1'] + ' ' + input['value2'] + ' ' +input['value3']
        values: {
            value1: input['value1'],
            value2: input['value1']
            value3: input['value3']
        }
      }
    end    
  }
}

上記のうち、 method に囲まれた範囲がメソッドのコード(構造化プログラミング言語におけるfunctionに相当するコード)になります。

  methods: {
    hello_world: lambda do |input|
      {
        result: 'hello ' + input['value1'] + ' ' + input['value2'] + ' ' +input['value3']
      }
    end,
    hello_world2: lambda do |input|
      {
        result: 'hello ' + input['value1'] + ' ' + input['value2'] + ' ' +input['value3'],
        values: {
            value1: input['value1'],
            value2: input['value2'],
            value3: input['value3']
        }
      }
    end    
  }

デバッグ用アクションを追加する

actionsブロックへ、次のようなデバッグ用のアクションを追加します。
以下のコードでは、 debug_method というアクションを追加しています。

actions: {
    debug_method: {
      title: "Debug connector method",
      input_fields: lambda do |object_definitions|
        [
          { name: "method", type: "string", optional: false },
          { name: "json", type: "string", optional: false}
        ]
      end,
      output_fields: lambda do |object_definitions|
        []
      end,
      execute: lambda do |connection, input, input_schema, output_schema|
        call(input['method'], parse_json(input['json']))
      end,
    }
},

input_fields(入力値)

methodjson の2つの文字列型パラメータを追加しています。

methodは、呼び出されるメソッドの名称がセットされます。 jsonは、メソッドに渡すパラメータがJSONテキストでセットされます。

メソッドに渡すパラメータをJSONテキストとすることで、1つのデバッグアクションで、メソッドごとの異なるパラメータへ対応することが可能です。

output_fields(戻り値)

戻り値は空の状態とします。今回はWeb上の開発環境での結果確認でのみ使用します(レシピで実行することを想定しない)ため、空の状態でも問題ありません。

execute(実行ロジック)

input_fieldsの method へセットされた値に対応するメソッドを呼び出します。パラメータが必要な場合は、JSONテキストで渡されたパラメータをパースしてメソッドへ渡します。

実行

上で実行したデバッグ用アクションを実行してみます。

image.png

テスト実行するメソッドと、メソッドに渡すパラメータをセットし、テストを実行します。
image.png

実行結果の確認

テスト実行を行うと、次のようにメソッドの実行結果を確認することができます。

image.png

image.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?