単体テストでこれらのオブジェクトを提供するためのより良いアプローチは何かを尋ねたいだけです。
私の単体テストでは、CSLAオブジェクトをテストしています。CSLAオブジェクトは、内部でApplicationUserオブジェクトの1つのプロパティと1つのメソッドを使用しています。ApplicationUserはIPrincipalから継承されます。プロパティは次のとおりです。1)ApplicationContext.User.IsInRole(...)-メソッドはIPrincipalの一部です2)ApplicationContext.User.Identity.Name-名前はApplicationUserの一部であるIIdentityのプロパティです別名IPricipal
私のテストの例(RhinoMockを使用):
public void BeforeTest()
{
mocks = new MockRepository();
IPrincipal mockPrincipal = mocks.CreateMock<IPrincipal>();
ApplicationContext.User = mockPrincipal;
using (mocks.Record()) {
Expect.Call(mockPrincipal.IsInRole(Roles.ROLE_MAN_PERSON)).Return(true);
Expect.Call(mockPrincipal.Identity.Name).Return("ju"); //doesn't work!!!! return null ref exc
}
}
2番目の値であるID名に少し問題があります。私はそれをモックしようとしましたが、内部で行われるため、モックされたIIdentityをApplicationUserに割り当てるのに問題があります。IIPrincipal(IIdentityを含む)を自分で作成するだけで、モックを作成しないように言われました。これは確かに行うことができます。これを使用してスタブとして呼び出すことができるかどうかわかりませんか?
では、IPrincipalとIIdentityの扱い方を教えていただけますか?どんな提案でも大歓迎です。