4

次の Ruby コードを想定します。

class User
  def self.failed_login!(email)
    user = User.find_by_email(email)
    if user
      user.failed_login_count = user.failed_login_count + 1
      user.save
    end
  end
end

無効な電子メールが与えられたときに user.save が呼び出されないことをテストするテストを書きたいと思います。例えば:

it "should not increment failed login count" do
   User.expects(:save).never()
   User.failed_login!("doesnotexist")
end

このテストは現在合格していますが、有効な電子メール アドレスを提供した場合にも合格します。

Mocha を使用して期待値を設定するにはどうすればよいですか? (または他のモックフレームワーク) User インスタンスの save メソッドが呼び出されないようにテストしますか?

(ユーザーを取得する方法の実装は将来変更される可能性があるため、find_by_email メソッドをスタブ化/モック化しないことが望ましい)

乾杯

4

2 に答える 2

20

これに遭遇したかもしれない他の人のために、私はモックフレームワークとしてRRを扱っていた別の投稿で答えを見つけました...モカではこれを行うことができます:

User.any_instance.expects(:save).never()
于 2009-05-27T06:59:00.600 に答える
4

あるいは、次のようなことを行うことができます

user = mock
User.expects(:find).returns user
user.expects(:save).never
于 2009-05-28T19:12:09.213 に答える