Skip to content

Instantly share code, notes, and snippets.

@e-jigsaw
Created May 29, 2013 15:56
Show Gist options
  • Save e-jigsaw/5671405 to your computer and use it in GitHub Desktop.
Save e-jigsaw/5671405 to your computer and use it in GitHub Desktop.

今日は割と Spike な branch ばかりつくっていたので、その備忘録などを兼ねて。

supertest

https://github.com/visionmedia/supertest

supertest は express の app のテストを書くことができるようになる。今やってるプロジェクトはそれぞれのユニットテストはテストファーストで書きながら TDD よろしくサイクルさせていたのだけれど肝心の結合部分であるところの app.js はノンテストっていう状況だった。

そのせいで、デグレてしまうこともあったのでいい加減この結合部分もテスト書かなくては!と使命感に駆られて書いた。

これで安心して枕を高くして寝れる。

docco

http://jashkenas.github.io/docco/

Docco は node.js と Python の合わせ技のドキュメント生成ツール。上記の supertest を書いていると、app.js のテストを書いたら API の総覧が読めたら便利なんじゃね!?となって、ドキュメント生成系のライブラリを調べてまわったらこれに落ち着いた。Markdown で書けるというのがやっぱりイイ。

最初は

# # hogehoge
# wawawa
describe "hoge", ->
  it "hogehoge", ->
		# some()

みたいな感じでコメントに Markdown を書きつけるという手法で書いていたのだけれど、これはあまりにもめんどくさすぎるので調べてみると Coffeescript の Literate という機能が使えるようで .litcoffee という拡張子で保存すると、Coffeescript Litterate の構文でコンパイルしてくれる。肝心の文法は

# hogehoge
wawawa

	describe "hoge", ->
		it "hogehoge", ->
			# some

というように、普通に Markdown を書くように Markdown を書き、改行してひとつインデントをつけるとコードとして認識してくれるようになる。コンパイルされた js のコードには Markdown の部分は完全に無視される。

これがすごく便利でさっそく .litcoffee の書式で書きなおした。

ただ、かなり歴史の浅い記法なので Sublime Text 2 の Syntax Highlighter がなくて、コードを書くときがめちゃくちゃ読みにくい。Docco で生成されたドキュメントでは Coffee 部分が Syntax Highlight されているので読みやすいからまだいいけれど。

とはいえ、テストは簡単なであるにこしたことはないし Coffeescript Literate で書いた方が後々楽。ま、Syntax Highlight された方がいいので(誰かつくって)つくるか。

factory-lady

https://github.com/petejkim/factory-lady

ruby の factory_girl は何度も耳にしたことがあって、node にもあったらいいなあ、とおもっていたらあった。factory_girl に対して factory-lady っていうこのセンスよ。

Factory.define で定義しておけばモリモリテスト用のデータを生成できるし、このライブラリだと Mongoose の接続先に Factory.create で保存してくれるので便利。

そんな感じで

今日はひたすらテストとドキュメントを作っていた。これまでは、

  • Wiki に Markdown で書く
  • テストを書く
  • モジュールを書く

みたいな順番で開発フローを回していたけれど、これが

  • テストとドキュメントを書く
  • モジュールを書く

にスッキリとマージされてより快適になった。これまでは、軽い仕様変更に対してとりあえず

  • Wiki の修正
  • テストの修正
  • コケるコードを動くようにする

というフローでこれに対応していたので、時々 Wiki を修正し忘れて Wiki とテストが乖離するといった事態が起きてぐっちゃりとしがちだったけれど、その部分が統一化されて

  • テストコードの修正(同時に Markdown の修正)
  • コケるコードを動くようにする

で対応できるようになったのでそういった事態が起きにくくなった。

同期によると Haskell はもっと高度にこういったことができるらしい。すごい。

console.log "Enjoy writing happy testable code life!"
@e-jigsaw
Copy link
Author

e-jigsaw commented Jun 1, 2013

Coffeescript literate を Sublime Text 2 で書くときは

https://github.com/jashkenas/coffee-script-tmbundle

に literate 用の .tmLanguage あるのでこれ使えばいいっぽい。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment