Unit testing 如何测试是否调用了fluent服务方法
我有一个安全规则,即新注册的用户对自己的用户实体拥有完全权限。我使用的是Rhino.Security,代码运行良好,但我想创建一个单元测试,以确保进行了适当的调用来设置权限。下面是代码的简化版本:Unit testing 如何测试是否调用了fluent服务方法,unit-testing,rhino-mocks,fluent,rhino-security,Unit Testing,Rhino Mocks,Fluent,Rhino Security,我有一个安全规则,即新注册的用户对自己的用户实体拥有完全权限。我使用的是Rhino.Security,代码运行良好,但我想创建一个单元测试,以确保进行了适当的调用来设置权限。下面是代码的简化版本: public User Register(UserRegisterTask userRegistrationTask) { User user = User.Create(userRegistrationTask); this.userRepository.Save(user);
public User Register(UserRegisterTask userRegistrationTask) {
User user = User.Create(userRegistrationTask);
this.userRepository.Save(user);
// Give this user permission to do operations on itself
this.permissionsBuilderService.Allow("Domain/User")
.For(user)
.On(user)
.DefaultLevel()
.Save();
return user;
}
我模拟了userRepository和permissionBuilderService,但是permissionBuilderService的流畅接口要求从链中的每个方法调用返回不同的对象(例如,.Allow(…).For(…).On(…)等)。但是我找不到一种方法来模拟链中的每个对象
有没有办法测试是否调用了permissionBuilderService的Allow方法,但忽略了链的其余部分
谢谢
Dan我也遇到了这个问题,最终将Rhino安全功能包装到服务层,原因有两个:
显然,这只是一种方法。但这让我的生活变得轻松多了…真正的permissionsBuilderService有什么副作用吗?(即,是否可能在测试中使用真实的数据库?)真实的permissionsBuilderService希望附加真实的数据库。这是可能的,但需要设置数据库,并在每种测试中拆除它。我希望有一些要求不那么高的东西。