gpt4 book ai didi

rhino-mocks - 我可以让 Rhino Mocks GenerateStub 或 GenerateMock 每次都返回一个新类型吗?

转载 作者:行者123 更新时间:2023-12-04 06:44:18 25 4
gpt4 key购买 nike

我想创建一个 IList 对象,这些对象都是不同的具体类型,所以:

var tasks = new List<ITask>();
foreach (string taskName in taskNames)
{
var task = MockRepository.GenerateStub<ITask>();
task.Stub(t => t.Name).Return(taskName);
tasks.Add(task);
}
return tasks;

问题是每个 stub 对象都是相同的具体类型。通常这很好,但我有一个案例,我想测试每个都是不同的类型。在这种情况下,我可以以某种方式配置 Rhino Mocks 来执行此操作吗?

编辑 :

“你一定是做错了”的团队今天已经生效。由于你们似乎都认为我需要先证明我的用例,然后才能尝试回答我的问题,所以这就是我正在做的事情:
  • ITask 在我的领域模型中,所以它是我的业务层的一部分。
  • 我在以 ITask 作为参数的更高级别(表示)层中有逻辑。
  • 表示层逻辑通常在 ITask 上执行一个默认策略,但在特殊情况下我们需要使用不同的策略,而要使用的策略完全取决于 ITask 对象的具体类型。
  • 常规策略模式在这里不起作用,因为这需要我的具体 ITask 对象了解它们上方的层。
  • 装饰器仍然必须知道他们装饰的对象的具体类型,并且必须在构建时(这种情况下错误的层)或使用时应用,但这给我留下了同样的问题 - 应用基于混凝土类型。
  • 我决定在 WPF 中使用 DataTemplates(和 DataType 属性)使用的相同模式。也就是说,给定一个来自较低层的对象,查看是否有人注册了一个策略来处理该类型,如果是,则使用它。否则,使用默认策略。

  • 所以,我希望你能明白我为什么需要测试逻辑。到目前为止,我不得不编写自己的 Stub 工厂,它从有限的具体 ITask 类型池中生成。它有效,但我宁愿让 Rhino Mocks 为我做这件事。

    最佳答案

    您可以添加 ITask.Type属性(property)。

    对接口(interface)背后的类型感兴趣的代码应该使用这个属性而不是调用GetType()。 .在您的测试中,控制 Type 的内容变得微不足道。任何给定 ITask 的属性返回 stub 。

    关于rhino-mocks - 我可以让 Rhino Mocks GenerateStub 或 GenerateMock 每次都返回一个新类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3881867/

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