kintuba is stub for a unittest, it can use the kintone global object.
kintuba はnode.js
上で動作する kintone オブジェクトのスタブモジュールです。kintone カスタマイズの JavaScript をローカル開発環境でテストする際に使用できます。
通常 kintone カスタマイズの JavaScript をテストしようとすると、kintone オブジェクトにアクセスできない為以下のエラーが発生します。
ReferenceError: kintone is not defined
kintuba を使用すると、kintone オブジェクトのような振る舞いをしたり、予め用意したテストデータを kintone のデータのように扱ったりすることができます。
また、karma でブラウザを使用したテストをする場合は、karma プラグインを併せて利用して下さい。
https://github.com/t-kojima/karma-kintuba
kintuba はrequire
されるとグローバルのkintone
オブジェクトを上書きします。(これは kintone にアップロードする JavaScript ファイルをそのままテストできるようにする為です。)
その為ローカルでのテストでのみの使用とし、本番環境では使用しないで下さい。
npm install --save-dev kintuba
or
yarn add --dev kintuba
テストコードでrequire
して下さい。以後テストコード及びテスト対象コードでkintone
オブジェクトが利用できます。
require('kintuba');
kintone では画面の移動等でイベントが実行されますが、ローカル環境ではそのような動作ができませんので kintuba ではイベントを実行する関数を用意しています。
kintone.events.on
でイベントを登録するのに対し、kintone.events.do
でイベントを実行します。
kintone.events.on('app.record.index.show', event => {
console.log('event done');
});
kintone.events.do('app.record.index.show');
// => event done
また、レコード詳細画面を開いた場合など、特定の状況を表現する場合はoption
を指定します。
kintone.events.on('app.record.detail.show', event => {
console.log(event.record.$id.value);
});
kintone.events.do('app.record.detail.show', { recordId: '2' });
// => 2
尚、kintone.events.do
は非同期で動作する点に注意して下さい。
kintuba をrequire
しただけではデータが存在しない為、event.records などにアクセスしても空配列が返ります。テストデータを返すようにするには、テストデータを用意し以下の手順で都度読み込んでください。また、テストデータの作成はここを参考に行ってください。
schema.load()
を実行すると、.kintuba/schema
ディレクトリにある以下のファイルを読み込みます。
- app.json
- fields.json
- form.json
- views.json
使用例)
const schema = require('kintuba/schema');
describe('example', () => {
before(() => schema.load());
});
既定のディレクトリ(.kintuba/schema
)以外にあるファイルを読みたい場合は引数で指定することができます。
schema.load('other/dir');
// other/dir/app.json 等がロードされる
fixture.load()
を実行すると、.kintuba/fixture
ディレクトリにある以下のファイルを読み込みます。
- login.json
- records.json
使用例)
const fixture = require('kintuba/fixture');
describe('example', () => {
before(() => fixture.load());
});
また、既定のディレクトリ以外を読む場合は引数で指定します。
fixture.load('other/dir');
// other/dir/login.json等がロードされる
MIT License.