音の鳴るブログ

鳴らないこともある

スタブったメソッドが戻り値かどうかテストする

たとえばこういう感じのクラスがあって

class Hoge
  value    : -> 100
  valueWith: (a)-> @value(a)
# valueWith: (a)-> @value(a); 100  # テスト通りそうなやつ

valueWith のテストを

  • 「引数つきで value を呼び出した戻り値」を戻り値とする

と、した場合。

seed = Math.random()

describe "Hoge", ->
  it "#valueWith should return result of #value", sinon.test ->
    instance = new hoge()

    stub = @stub instance, "value", -> seed

    test = instance.valueWith 1
    
    expect(stub).to.be.calledWith 1
    expect(test).to.equal seed

こんな感じでスタブと乱数を使って戻り値と一致するかチェックしてる。