我有一个方法canUserRead,它可以作为用户处理一个空参数(因为有时用户没有登录)。在Rhino Mocks中,如何使用null参数存根方法?
现在我想创建一个行为反映该方法的存根。我试过了:
IAccessRightsManager stubAccessRights = new
MockRepository.GenerateStub<IAccessRightsManager>();
// if there is no user logged in
stubAccessRights.Stub(ar => ar.canUserRead(null, confidentialDocument))
.Return(false); //doesn't compile
stubAccessRights.Stub(ar => ar.canUserRead(null, nonConfidentialDocument))
.Return(true); //doesn't compile
// if there is a user without confidentiality clearance logged in
stubAccessRights.Stub(ar => ar.canUserRead(nonPrivilegedUser, confidentialDocument))
.Return(false);
stubAccessRights.Stub(ar => ar.canUserRead(nonPrivilegedUser, nonConfidentialDocument))
.Return(true);
// if there is a user with confidentiality clearance logged in
stubAccessRights.Stub(ar => ar.canUserRead(privilegedUser, confidentialDocument))
.Return(true);
stubAccessRights.Stub(ar => ar.canUserRead(privilegedUser, nonConfidentialDocument))
.Return(true);
这不会编译,因为null不是IUser类型。并且null没有参考身份,因此使用null初始化新的IUser变量并不会有帮助。
那么,如何创建一个存根方法,它在传递一个空参数时返回一些合理的东西?
你用什么版本? NuGet的最新版本不包含* MocksRepository *上的* GenerateStub *方法。 – galenus
@galenus我使用Rhino Mocks 3.6 build 21,从Rhino Mocks网站下载(不是NuGet槽)。这是我在2月份下载的最新版本。 –
据我所知,犀牛直到最近才得到维护。它改变了[今年5月](http://ayende.com/blog/tags/rhino-mocks)。所以你最好从NuGet更新库。 – galenus