ニフクラmBaaSお役立ちブログ

スマホアプリ開発にニフクラmBaaS。アプリ開発に役立つ情報をおとどけ!

スクリプトをローカルでテスト実行するには?

ニフティクラウド mobile backendを自分で拡張できるスクリプト機能ですが、書いたコードをコントロールパネルにアップロードして実行して結果を確認するというのは面倒ですし、時間もかかります。

そこでローカルで手軽に動作確認を行う方法を紹介します。

コンソールで作る

レスポンスはともあれ、とりあえず実行して動作確認するというレベルであれば次のように記述できます。

script.js:

module.exports = function(req, res) {
  // ここにスクリプトを記述
  res.status(200).json({message: "Hello"});
};

index.js

var code = require('./script');
code(
  {},
  {
    status: function() {
      return this;
    },
    json: function(json) {
      return this;
    }
  }
);

このようにして node index.js とすれば作成しているスクリプトを読み込んで実行します。リクエスト情報の req とレスポンスの res は擬似的に適当な情報を付与する必要があります。

テスト実行環境を使う

もう少しちゃんとしたリクエスト、レスポンス情報を使いたい場合のためにテスト実行環境を作ってみました。NCMBMania/ScriptTestEnvironment: スクリプトのテスト環境にアップロードされています。

設定できるのはクエリー文字列、フォームなどのデータ、そしてHTTPメソッドとなっています。それらの情報を使ってスクリプトを呼び出し、結果をWebブラウザ上に返却します。クエリー、フォームデータはテキストエリアの中に行で分けて記述してください。

処理部分は次のようになっていて、ごくシンプルです。

app.all('/script', function (req, res) {
  try {
    return code(req, res);
  }catch(e) {
    res.status(500).text(e);
  }
});

codeが先ほどのコンソールで実行した場合と同じで、作成しているスクリプトのコードになります。それらを node.js のWebフレームワークであるExpressのリクエスト/レスポンスオブジェクトとともに呼び出しています。

使い方

利用の際にはnode.jsが必須です。リポジトリをクローンまたはダウンロードし、必要なライブラリをインストールします。それが終わったら app.js を実行すると http://localhost:3000/ にて表示できるようになります。

$ npm install
$ node app.js // または nodemon を別途インストールして nodemon app.js

後は script.js を修正して実行してみるというのを繰り返して開発していきます。

注意点

環境変数が本番環境のものに比べると多いです。また、requireを使えばncmb/superagent以外のライブラリを読み込めますが、本番環境ではサポートされていませんので注意してください。


テスト環境を使えば、スクリプトを作成してWebブラウザ上から動作確認を行うのがスムーズになります。皆さんのスクリプト開発に役立ててください。

NCMBMania/ScriptTestEnvironment: スクリプトのテスト環境