Backbone.jsでモックした#save
が返すxhrのメソッドチェーンでテストが通らなくて困ってました。
呼ばれるメソッドがわかっていれば、下記のようにNull Objectっぽいことができます。
nullObjectish = {foo: (-> @), bar: (-> @)}
nullObjectish.foo().foo().bar().bar().foo()
# => { foo: [Function], bar: [Function] }
ちゃんとしたNull Objectの実装は難しいっぽいです。@mizchi がそう言ってました。
(2014/04/25)
クラス対応版
_ = require 'underscore'
class Example
foo: ->
bar: ->
baz: ->
buildPseudoNullObject = (klass) -> _.object ([k, (-> @)] for k, v of klass.prototype)
nullObjectish = buildPseudoNullObject Example
nullObjectish.foo().foo().bar().bar().baz().foo()