Mas*_*low 6 unit-testing rhino-mocks
是否可以模拟存根/模拟的对象成员调用而不必将其定义为存根,并将返回值设置为所有单独的详细行?
例:
[TestMethod]
public void AssignedPermissions_AssociateExists_ReturnsEdit_Rhino()
{
//Arrange
var fakeConfiguration = MockRepository.GenerateStub<IDomainControllerConfiguration>();
var fakeAssociateRepository = MockRepository.GenerateStub<IAssociateRepository>();
fakeConfiguration.Stub(x => x.AssociateRepository).Return(fakeAssociateRepository);
fakeAssociateRepository.Stub(x=>x.GetAssociatesByRole(null,false,null)).IgnoreArguments()
.Return(new IAssociate[]{MockRepository.GenerateStub<IAssociate>()});
var domain = new DomainController(fakeConfiguration);
const AssignedPermission expected = AssignedPermission.Edit;
//Act
AssignedPermission actual = domain.AssignedPermissions();
//Assert
Assert.AreEqual(expected, actual);
}
Run Code Online (Sandbox Code Playgroud)
所有那些临时变量是否只是为了存根嵌套方法调用?
我从未使用过该功能,所以我不能 100% 确定这会起作用,但理论上 Rhino 模拟支持“递归模拟”,这应该允许您至少通过执行以下操作来删除 fakeAssociateRepository:
var fakeConfiguration = MockRepository.GenerateStub<IDomainControllerConfiguration>();
fakeConfiguration.Stub(x => x.AssociateRepository.GetAssociatesByRole(null,false,null))
.IgnoreArguments()
.Return(new IAssociate[]{MockRepository.GenerateStub<IAssociate>()});
var domain = new DomainController(fakeConfiguration);
Run Code Online (Sandbox Code Playgroud)
(注意:代码未经测试,甚至未编译)
| 归档时间: |
|
| 查看次数: |
1053 次 |
| 最近记录: |