【问题标题】:Moq generate class declaration while using ninjectMoq 在使用 ninject 时生成类声明
【发布时间】:2016-03-01 20:55:10
【问题描述】:

我正在尝试对第 3 方库进行单元测试,该库的构造函数上有许多接口定义。

例如;

IKernel kernel = new StandardKernel();
kernel.Bind<IOwnerDataProvider>().To<OwnerDataProviderFake>();

我不得不手动创建 OwnerDataProviderFake,因为我不想使用它的真正实现。

有什么方法可以使用 Moq 来创建这个接口的假实现而不是手动创建?

例如类似的东西;

kernel.Bind<IOwnerDataProvider>().To<Mock.GenerateFakeClassDefinition<IOwnerDataProvider>()>();

【问题讨论】:

  • 试试 MoqMocking 扩展。然后,Ninject 将为您提供的大多数类型创建一个最小起订量。

标签: c# dependency-injection ninject moq


【解决方案1】:

当然,这就是 Moq(和嘲笑)的全部意义所在。查看Moq Quick Start 以获取更多创建模拟对象的示例,但请尝试以下操作:

kernel.Bind<IOwnerDataProvider>()
      .ToMethod(context => new Moq.Mock<IOwnerDataProvider>().Object);

这将在您每次从内核中获取IOwnderDataProvider 接口时创建一个新的模拟。

您可能希望通过调用 Setup 来配置它的行为,但如果没有您提供的更多信息,我将无能为力。

【讨论】:

  • 这已经解决了我的问题,我将查看文档以获取更多详细信息。谢谢。
猜你喜欢
  • 2018-01-22
  • 2011-04-02
  • 2020-03-19
  • 2017-03-19
  • 2012-06-22
  • 1970-01-01
  • 2010-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多