gpt4 book ai didi

rhino-mocks - 在 Expect.Call 中设置对象的属性

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

很难解释我要搜索的内容,但我的示例应该可以说明这一点。

我有下一个代码:

var schedule = ScheduleUtil.CreateScheduleDto(user, user);
Expect.Call(() => _scheduleRepository.Save(schedule));

现在,我想要做的是在进行此 Save 调用时,schedule.id 属性应设置为另一个值(例如 1)。

我不想模拟时间表。这可以做到吗? Save 方法不返回值,因此这不可能,但我确实希望修改对象计划。

更新:也许一个小例子会阐明我到底想要什么。

假设有一个带有方法 Save 的类:

公共(public)无效创建(实体实体){ //实体保存到数据库 //entity.id 更新为数据库中创建的 id

因此,在创建之前,entity.id 为 -1,在创建之后为 > 0。

现在,有一个使用这个 Create 的服务。此服务方法的代码约定规定,在调用它之前,实体的 ID 必须等于 -1,在调用之后,它的 ID 必须 > 0(前提条件和后置条件)。

所以,我需要的是这样的东西:变种实体=新实体();//id == -1Expect.Call(() => _instance.Create(entity);
//现在 entity.id 应该是一个随机数 > 0。这就是我需要的,让 Rhino Mocks 将实体的 id 更新为给定的整数。这可能吗?

最佳答案

没有。如果你没有模拟 _scheduleRepository,Rhino Mocks 不知道它。你为什么不想模拟 _scheduleRepository

编辑: 好的,现在我明白你想做什么了。使用“WhenCalled”扩展方法来定义当 Rhino.Mocks 拦截调用时要执行的代码。这样的事情应该有效:

_scheduleRepository.Expect(s => s.Save(schedule)).WhenCalled(a => ((Schedule) a.Arguments[0]).Id = 1);

关于rhino-mocks - 在 Expect.Call 中设置对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4387299/

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