質問
今回が初めてRhinoMocksることができるように把握、構文のほか、何が起きているのを下のフードです。
私はユーザオブジェクトまでユーザーは、プロパティを持って呼IsAdministrator.の値IsAdministratorを評価しようクラスをチェックのユーザのセキュリティアクセス権を返しますどちらかがtrueまたはfalseに基づきアクセス権を表します。ようにしている模擬このユーザクラスは、偽造しに対する返り値IsAdministratorのための分離の一部ユニット。
これが今になっているか
public void CreateSomethingIfUserHasAdminPermissions()
{
User user = _mocks.StrictMock<User>();
SetupResult.For(user.IsAdministrator).Return(true);
// do something with my User object
}
現在、私は期待してサイはし"'への呼び出し物のゲッターは、trueを返します。このニス(敷地内)現在のとなってい例外での依存関係のIsAdministrator物件です。
できる人について説明できる夢。
解決
スタンフォード大学の前の注っ飛びます。一般的にい用途への使用は避けて"厳しい"模擬がでお客様をお迎えいたしますの脆性テストです。厳しい模擬しようとしますが何も発生しないことを明示的に教えてサイズのことが起こると思います。またいと思いますが誤解などのサイズはやっていきますが呼び出されるようにしてくださを模擬.思いでカスタムオブジェクトのいずれかとして導き出されるもの、又は実施する。型定義されています。かった場合には、代わりに自分ででのようになります:
public class FakeUserType: User
{
//overriding code here
}
以来、IsAdministratorであるとともに、公共財のユーザーの種類できないオーバーライドで受け継がタイプです。
どのご質問には関係が複数の方法で取り扱うことができます。きの実施IsAdministratorチャージすることができる仮想物をお客様のユーザークラスとして aaronjensen 記載しており
public class User
{
public virtual Boolean IsAdministrator { get; set; }
}
これはokアプローチいただける場合に限り、プランの継承からお客様のユーザークラスです。まwanなる偽の他の委員にこのクラスはいいものです仮想ではなく、望みの挙動をするために、
別の言い方をすでに利用できます。場合には、ユーザークラスまたは模擬しいエキスインターフェースです。お上記の例のようにこの:
public interface IUser
{
Boolean IsAdministrator { get; }
}
public class User : IUser
{
private UserSecurity _userSecurity = new UserSecurity();
public Boolean IsAdministrator
{
get { return _userSecurity.HasAccess("AdminPermissions"); }
}
}
public void CreateSomethingIfUserHasAdminPermissions()
{
IUser user = _mocks.StrictMock<IUser>();
SetupResult.For(user.IsAdministrator).Return(true);
// do something with my User object
}
ときのローカル色の強したい場合に使用 依存性注射およびIOC その基本原理は同じです。一般的に利用したい授業へのインタフェースではなくコンクリート実装。
この助けになっていますよ。っていRhinoMocksのために長い時間と大きなプロジェクトは今もなお気軽にお問い合わせくつTDDと嘲笑う.
他のヒント
確IsAdministrator virtualなのです。
また、必ず呼び出す_mocks.ReplayAll()
_mocks.ReplayAll()までは何も行いません。ですので使用SetupResult.のための()ないます。使用します。コール)を確実に行うコードも正しい。