Jasmine 2.0

Jasmine 2.0 on Google Apps Script


jasmine2.0をnodeで動かす方法、ようやくとっかかりが掴めた。

jasmineの開発チームは、どこかのフォルダにspecファイルを置いといて、そのフォルダを指定してjasmine runnerを走らせるようにしてるみたい。そのコードを発見。

まずは、これをそのままGAS上で再試験できる状態を目指そうかと思う。
そしたら、GAS上でのjasmineの動作を信頼できるようになるし、その過程で基礎的なモジュールも増えるんじゃないかと。

rajahからUI部分を切り離して、consoleに移してしまって、rajah自体はnodeでもGASでも動く簡素な jasmine runnerにする。

そしたら、GASのアプリ作ったときも、node上でRajasとjasmineを使ってUnitテストして、GAS上でも同じテストができることに。・・・いいぞ。

フォルダ内のSprcファイルを探すのに、Jasmineの開発者のRunnerがFileSystemつかってた。そりゃそうか・・・。

Code.gsつくるとき、ユニットテストのためにmockfsつくったので、それをいじって、GAS上で動くようにする。Google driveを操作するのではなく、パックしたmodule filesを探したり読み込んだりできるように。あくまでRead only accessで。

Code Core modules

Node.js で、グローバルスコープに展開されるオブジェクトや基礎的なモジュール、そんなに多くなくてそこそこできそうなので、それをまとめてpackageにしてnpmに載せてしまいたい。

`process` は、最低限のものだけ用意したやつがもうあるので、アレに少し足しておけばとりあえずはいいかと。

`Buffer` は、コンストラクタが存在してさえいればいいので、いまは空の関数を置いてある。GASでblobのラッパーとして実装してやったら何かいいことあるだろうか。

`console` は、あれでいけそうなので、GAS-Libraryとして外だし。で、GAS-Libraryいらないときもあるだろうから、ライブラリが存在しない時は、出口がLoggerになるようにしておく。このときは、console.errorだけを記録する仕様でもよいかも。

`fs`、前述のとおり。


Node Core modules

いまのところ動いていそうなもの。

  • util
  • assert

そのうち試したいもの。

  • event

processは、ほんとは event emitter のインスタンス。
いまはなんちゃって実装だけど。

GASにはnon-blockingな発想はないし、利用目的からしてそぐわないけど、思考実験としてどこまでできるものなのかちょっと興味あり。


おやすみなさい。



Comments