Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何模拟不使用';你没有接口吗?_C#_Asp.net Mvc_Nunit_Moq - Fatal编程技术网

C# 如何模拟不使用';你没有接口吗?

C# 如何模拟不使用';你没有接口吗?,c#,asp.net-mvc,nunit,moq,C#,Asp.net Mvc,Nunit,Moq,在我的控制器的操作中,我正在执行: string a = Url.Action(...); 我正在使用nunit和Moq(以及MVC2) 我如何存根对Url.Action的调用以返回一些字符串?不能用Moq模拟没有默认构造函数的具体类(我假设Url是UrlHelper的实例)。这里有两个选项: (1) 作为替代/补充模拟框架签出 (2) 为实现接口的UrlHelper方法编写一个包装器类,然后可以为客户端模拟包装器 你不能。动作不是虚拟的,所以你不能用Moq来存根它 但是,您可以在控制器中创建

在我的控制器的操作中,我正在执行:

string a = Url.Action(...);
我正在使用nunit和Moq(以及MVC2)


我如何存根对Url.Action的调用以返回一些字符串?

不能用Moq模拟没有默认构造函数的具体类(我假设Url是
UrlHelper
的实例)。这里有两个选项:

(1) 作为替代/补充模拟框架签出


(2) 为实现接口的UrlHelper方法编写一个包装器类,然后可以为客户端模拟包装器

你不能。动作不是虚拟的,所以你不能用Moq来存根它


但是,您可以在控制器中创建虚拟方法。并在测试中替换/覆盖它的实现。

您能否发布Url的定义,或者更完整的示例。。。我们需要知道Url.Action是什么。我认为你不能,除非你能以某种方式连接到Url类。我对Moles的存在感到惊讶——但它肯定不能以100%的可靠性“绕道”静态方法吗?例如,编译器不是可以自由内联静态方法吗?我不完全确定Moles在引擎盖下是如何工作的,但我确实经常使用它,并且没有“moling”静态方法或其他“unmockable”依赖项的问题。Controller.Url和UrlHeler.Action都不是静态的。两者都是类的实例成员。但是,这也不会有帮助,因为UrlHeler.Action不是虚拟的。您可以模拟没有默认构造函数的具体类。使用接受对象的params数组的模拟构造函数。示例:
newmock(“param1”)
Moq不能覆盖非虚拟或静态成员。