venusianなくてもよいんじゃないの?
pyramidはviewの登録にvenusianを使っている。
venusian?
venusianとは何かというと、
- decoratorとして呼ばれた時には何の影響も与えない。クロージャを登録する
- scan()が呼ばれたタイミングで、登録されたクロージャを実行する
というもの。
これを使って、実行後に呼ばれるテンプレートと紐付いた形でviewが登録される。 何が良いかというと
- 不要なものが付属していないview関数
- 適切なルーティングを経て、requestを受け取り、レンダリングまで行った結果を返すview関数
この2つが生まれる。前者はviewのテストの時に便利。
djangoだったらどうする?
最近django使っていなかったので細かい所うろ覚えだけれど。 どうしたら良いか考えてみた。
困るのは2つ
- デコレータがくっついた関数をテスト時に引き剥がしたい
- レスポンスではなく、戻り値のdictなどでチェックしたい
デコレータがくっついた関数をテスト時に引き剥がしたい
そもそも、別々に定義すれば良さそう
レスポンスではなく、戻り値のdictなどでチェックしたい
てきとうにmockを差し込めば良さそう。
その頃のtweets
デコレータ外したい場合は、そもそも、デコレータ付けない関数とデコレータつける関数と別々に定義しておけば良いだけだし。 decorated_view.py https://t.co/qfoFqZ4Qxt
— podhmo (@podhmo) September 18, 2013
responseでwrapされて返ってくるのが邪魔ならてきとうにmockしてあげれば良いだけなきがする。 annoying_response.py https://t.co/QbxpNsKbhu
— podhmo (@podhmo) September 18, 2013
ちょっとwithのところで置き換える名前空間指定するのがめんどうだけれど。それだってテンプレートのレンダリングに使われる関数はだいたい同じものだろうし。てきとうに部分適用しておけば良いと思う
— podhmo (@podhmo) September 18, 2013