我只想问在我的单元测试中提供这些对象的更好方法是什么。
在我的单元测试中,我正在测试 CSLA 对象。CSLA 对象在内部使用 ApplicationUser 对象的一种属性和一种方法。ApplicationUser 继承自 IPrincipal。属性是: 1) ApplicationContext.User.IsInRole(...) - 该方法是 IPrincipal 的一部分 2) ApplicationContext.User.Identity.Name - 名称是 IIdentity 的属性,它是 ApplicationUser aka 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
}
}
我对第二个值(身份名称)有一点问题。我试图模拟它,但在将模拟的 IIdentity 分配给 ApplicationUser 时遇到问题,因为它是在内部完成的。有人告诉我自己创建一些 IIPrincipal(包括 IIdentity),根本不要嘲笑它。这是肯定可以做到的。不确定这是否可以称为存根使用?
那么你能建议我如何处理 IPrincipal 和 IIdentity 吗?任何建议都非常受欢迎。