2010-12-04 2 views
4

私は、すべてではないにしても、ほとんどのデータがcurrent_organizationにスコープされているアプリで作業しています。だから私のコントローラの私の検索の呼び出しで、私は、例えば、このようなものを持っている:mochaとtest/unitを使ってRails関連メソッドを正しくスタブするには?

def show 
    @user = current_organization.users.find(params[:id]) 
end 

はしかし、私のコントローラのテストで、私は適切な方法(または任意の方法)を考え出す苦労を抱えているスタブに私はのようなものをテストすることができるように、これらの呼び出し:

get :show, :id => 1 
assert_response :success 

ものは何でもか「ARは、ID = 1とORGANIZATION_ID = 3を持つユーザーを見つけることができません」と言って失敗しています。私が何をしようと、私はそれを回避することはできません。 AR find()コールは、基本的な配列のために存在しないためcompany.stubs(:users).returns([users(:one), users(:two)])が、それは動作しません:私はのようなものをやってみました

setup do 
    company = organizations(:company) # fixture 
    @controller.stubs(:current_organization).returns(company) 
    # now what do I stub, if anything? 
end 

マイセットアップブロックは次のようになります。

偽のユーザーアレイをfake_usersのような変数に設定してから、fake_users.stubs(:find).returns(@user)のようにする必要がありますか?それは正しいとは思えませんでしたが、それが正しい方法かもしれません。

私はこれを処理する最良の方法を探しています。それが重要であれば、私はmochaとtest/unitを使っています。

ありがとうございます!

答えて

2

あなたは、具体的fake_usersにアクセスする必要がない限り、私はあなたができる最も簡単な方法は、おそらくこのようなものだと思う: -

company.stubs(:users => stub('users', :find => users(:one))) 

残念ながら、この種のコードは模擬しにくいです。あなたは私の提案された解決策がかなり脆弱であることに気付くでしょう。

+0

ありがとう、それは私が必要とするもののために動作するはずです。 – rpheath

関連する問題