3

私はコアラの宝石を使ってFacebookのリクエストを行っていますが、次のコードがあります。

  @graph = Koala::Facebook::API.new(oauth_token)
  @graph.batch do |batch_api|
    #... do stuff here
  end

バッチ呼び出しをモックアウトして、そこで行っていることをシミュレートしたいと思います。

これが私がRRに持っているものです。

oauth_token= "Sometoken"
batch_api_mock = nil
graph_mock = mock(Koala::Facebook::API).new(oauth_token).mock!
graph_mock.batch.returns do
  yield batch_api_mock if block_given?
end

問題はそのblock_givenですか?ソースにブロックが渡されていても、はfalseを返します。

RRを使用してブロックを取得するメソッドをモックするにはどうすればよいですか?

4

1 に答える 1

5

K開いているチケットを調べた後、答えは、ブロックの最初の引数がRR :: ProcFromBlockであることがわかりました。これは、関数に渡されるブロックとまったく同じです。これが機能するようにコードを変更したものです。

oauth_token= "Sometoken"
batch_api_mock = nil
graph_mock = mock(Koala::Facebook::API).new(oauth_token).mock!

#The block is passed in as a proc as the first argument to the returns block.
graph_mock.batch.returns do |proc_as_block|
  proc_as_block.call
end

それが誰かが時間を節約するのに役立つことを願っています。彼らはこの小さな宝石をドキュメントに追加する必要があります

于 2011-11-10T19:44:03.277 に答える