我是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();
}
}
换句话说,我想创建一个模拟家庭控制器并在其中模拟一些局部变量及其方法 - 但不是全部。这可能是使用Rhino吗?
答案 0 :(得分: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:我经常尝试将所有逻辑(并单独测试)放在控制器之外,因为测试控制器非常困难(你需要在那里初始化很多东西)涉及另一个嘲弄)。