mockery を GAS で動かしたい

mockery で充分っぽい。


node の module を差し替えてテストするツールをどうやってつくろうか考えていたのだけど、mockery で充分だと思い至りました。

やりたいのは、「GAS上で動作するコードをnode上でテストしたい」、ということがメインでもともとそんなに複雑なことをしたいわけではなかったのだけど、少しだけ色気を出してconfigファイルで構成を細かく定義できるようにしようかな、くらい思っていました。

が、まずはユニットテストできれば充分だな、と思いなおして、それなら mockery で足りるんじゃなかったっけ? と。

改めて見直してみたら、ほんとにシンプルで、充分でした。


それでもやっぱりGAS上でも動かしたい。


GAS上で動かすコードをnode上でテストしたい、と言っても、やっぱりGAS上でも動かしたい。

  • node上で、jasmine使ってユニットテストを書いて、そのときmockeryを使う。
  • そのあと、そのコードをそのまま Rajah で GAS上へ移動して再度同一テストする。

という使い方をしたいため。 まあ、node上で使うmockモジュールと、gas上でのそれは違うものを用意しないといけないかもしれないけど・・・。

だとしても、

var spreadsheetApp = require('SpreadsheetApp');

と書いておくだけで、これを自由に差し替えてテストできるのは楽しいと思うので。


コードを読んでみた。


それで mockery を codegs でも動くようにできるかどうかソースを読んでみたら。

mockery は 'module' モジュール /* = require('module'); */ の公開されていないメソッドやオブジェクトへ直接アクセスするのだけど、codegs の 'module' モジュールもオリジナルの関数階層構造や関数名をそのまま残して作っておいたので・・・。

たぶん、修正なしでそのまま動く!
助かる・・・。


テストしたい。


そうすると、ほんとに動くかどうか、mockery公式のテストコードをGAS上で走らせてみたい・・・と、当然思うのだけど、これが nodeunit を使っていて、nodeunit は他のモジュールいろいろに依存していて今の codegs ではそのまま動かせない。

lodash なんかもたぶん全部そのまま動くんだけど、付属のテストコードを GAS 上で走らて安心したいのにこちらは vm などに依存していて・・・。

うー。

node の依存先が少ないモジュールをGASでも使えたらいいな、と思っていたけど、テストになるとみんな依存度が格段に上がるんだね・・・。最近になって、やっと気づきました。


最小の労力でこれらのテストを動かす方法、なにかないだろうか・・・。




Comments