2012-02-08 20 views
1

私はRhino Mockを使ってテストしたいValidateというメソッドを持つクラスを持っています。 Validateメソッドは、SQLデータベースにアクセスする静的クラスを呼び出します。Rhino Mocksはプライベートメソッドを無視します

私はテストを実行するときに静的クラスへの呼び出しを無視するようrhinoに指示します。 以下のコードをデバッグするときは、静的クラスが呼び出され、データベースにアクセスしようとするときに「エラーメッセージのテキスト」が返されます。

var mock = MockRepository.GenerateMock<DataUpdateTaskExecutor>(); 

string resourceName; 
Expect.Call(SqlResourceHelper.GetString(resourceName)).IgnoreArguments().Return("error messaage text"); 

IList<string> errors; 
Assert.AreEqual(false,mock.Validate(out errors)); 
+0

インターフェイスでラップできない場合は、他にも多くのオプションがありません。おそらくオプションはゼロですが、それは私のために絶対に少しです。 – Joe

答えて

2

Rhino.Mocks(だけでなく、MOQのような他の無料モックフレームワークのほとんどは)非仮想メンバーを嘲笑することはできません。 @Joe Tuskanは言ったように、あなたはインターフェイスの機能をラップして、コンストラクタにインターフェイスを注入するか、それを非難することのできる非静的メソッドにする必要があります。

あなたにはお金がありますが、商業的なモッキングツールがあり、仮想メンバー以外のメンバーを嘲笑することができます。私はそれらの経験は一切ありませんので、私は名前で言及しません。

+1

"お金があれば、商業的なモッキングツールがあり、仮想メンバー以外のメンバーを嘲笑することができます。" ---ああ、あなたはあなたのテストをより壊れやすくするためにお金を払う必要があります。それは素晴らしいです! – zerkms

0

「お金があれば、非仮想メンバーを嘲笑することができる商用モッキングツールがあります」と、Telerikはちょうどモックフレームワークを素晴らしいものにしています。それは支払う価値がある!

関連する問題