Asp.net mvc 有人能帮我用Moq模拟这个ASP.NET MVC控制器吗?

Asp.net mvc 有人能帮我用Moq模拟这个ASP.NET MVC控制器吗?,asp.net-mvc,mocking,controller,moq,Asp.net Mvc,Mocking,Controller,Moq,我试图使用Moq模拟一个ASP.NET MVC2控制器,但我得到一个错误,因为我试图模拟一个不可重写的属性。请问我该怎么做 注意:我试图模拟的控制器是(abstract)ASP.NET MVC2控制器。。。不是自定义控制器。为什么?我正在尝试测试我所做的一些自定义控制器扩展。我实际上没有自定义的控制器类 代码: 因此,我不确定是否需要在某个测试助手实用程序中创建自己的假控制器类,该实用程序什么都不做,只是从controller继承。然后举例说明 但我觉得这一切都应该用mock来完成,而不是从一些

我试图使用Moq模拟一个
ASP.NET MVC2控制器
,但我得到一个错误,因为我试图模拟一个不可重写的属性。请问我该怎么做

注意:我试图模拟的控制器是(
abstract
ASP.NET MVC2控制器
。。。不是自定义控制器。为什么?我正在尝试测试我所做的一些自定义控制器扩展。我实际上没有自定义的控制器类

代码:

因此,我不确定是否需要在某个测试助手实用程序中创建自己的假控制器类,该实用程序什么都不做,只是从
controller
继承。然后举例说明

但我觉得这一切都应该用mock来完成,而不是从一些开始,然后制作一些实例

我很困惑:(


更新:

我被要求解释我要测试的代码。我有一个自定义的ViewResult,构造函数设置了一个字符串属性。我只是确保设置了该属性

// Act.
var myResult = new MyResult(controllerMock.Object);

// Assert.
Assert.NotNull(myResult);
Assert.AreEqual("controllerName", myResult.ControllerName);

对于测试,我在测试类内创建了一个测试类控制器,如下所示:

protected class TestController : Controller { }

然后我有一个独立的测试类,可以用于测试。然后你可以使用这个TestController实例。

你能展示你要测试的代码吗?也许有一个更简单的方法。为什么不创建一个虚拟控制器类,并用它来测试,而不是试图模拟它呢?这是我的问题,Marnix。什么是好的实践,他说re?我觉得创建一个虚拟控制器“很难闻”…我想看看其他人都做了什么。我不明白为什么创建一个虚拟控制器会是一种代码味道。模拟实际上是一个动态创建的虚拟类。在某些情况下,我不得不求助于虚拟类,在这些情况下重写属性不是一个选项。我确实倾向于保留带有测试代码的虚拟类(例如,私有类)以防止维护问题。同意-我也将它们保留在同一个文件中。我以前做过-我只是好奇是否有其他方法来做,或者我是否遗漏了什么。
// Act.
var myResult = new MyResult(controllerMock.Object);

// Assert.
Assert.NotNull(myResult);
Assert.AreEqual("controllerName", myResult.ControllerName);
protected class TestController : Controller { }