gpt4 book ai didi

unit-testing - Rhino Mock 可以直接深入/嵌套成员吗?

转载 作者:行者123 更新时间:2023-12-03 14:35:25 25 4
gpt4 key购买 nike

是否可以模拟 stub /模拟的对象成员调用而不必将其定义为 stub ,并将返回值设置为所有单独的详细行?

例子:

    [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);
}

是否所有这些临时变量只是为了消除嵌套的方法调用所必需的?

最佳答案

我从未使用过该功能,所以我不能 100% 确定这会起作用,但理论上 Rhino 模拟支持“recursive mocking ”,这应该允许您至少通过执行以下操作来删除 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);

(注意:代码未经测试,甚至未经编译)

关于unit-testing - Rhino Mock 可以直接深入/嵌套成员吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2187887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com