0

我是 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();
   }
}

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

4

1 回答 1

0

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

注意1:如果要运行MVC,您还需要无参数ctro,或修改ConstructorFactory(例如这里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:我通常试图将所有逻辑(并单独测试)放在控制器之外,因为测试控制器非常困难(你需要在那里初始化很多涉及另一个模拟的东西)。

于 2017-11-30T07:15:15.493 回答