【问题标题】:Partially mocking an ASP.Net MVC action method in Rhino Mock?在 Rhino Mock 中部分模拟 ASP.Net MVC 操作方法?
【发布时间】:2023-03-13 06:17:01
【问题描述】:

我是 Rhino 的新手,想知道如何在我也将要模拟的类的方法中模拟局部变量/对象。在这种情况下,我将使用 ASP.Net MVC 控制器和操作方法来执行此操作。

这是控制器的简化外观:

public class HomeController : Controller  {

   public myObjectType myMockedObject; //I want to mock this
   public myNonMockedObject;           //don't want to mock this
   public ViewResult Index() {
     //call various methods on the mocked and nonmocked members
     return View();
   }
}

换句话说,我想创建一个模拟主控制器并模拟其中的一些局部变量及其方法——但不是全部。这可以使用犀牛吗?

【问题讨论】:

  • myObjectType 的类型是什么?接口还是普通类?

标签: asp.net-mvc controller mocking rhino-mocks


【解决方案1】:

您可以通过构造函数参数注入这些。只需编写以 myObjectType 作为参数的构造函数。在此构造函数中,只需初始化您的字段。

注意1:如果要运行MVC,你还需要无参数的ctro,或者修改Co​​nstructorFactory(例如这里https://www.codeproject.com/Articles/560798/ASP-NET-MVC-Controller-Dependency-Injection-for-Be)。或者只是考虑使用一些 IoC 容器(例如https://www.nuget.org/packages/Unity/),它可以在控制器(模拟或普通类)中注入任何你想要的东西。

注意2:您应该从 myObjectType 类中提取一个接口并模拟该接口而不是具体类(Rhino 处理得更好)。

注意3:我通常会尝试将所有逻辑(并单独测试)放在控制器之外,因为测试控制器非常困难(你需要在那里初始化很多东西)涉及另一个嘲笑)。

【讨论】:

    猜你喜欢
    • 2013-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多