Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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/8/xcode/7.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
Unit testing 通过app.config配置Unity(2.x)以使用Moq作为实现_Unit Testing_Inversion Of Control_Unity Container_Moq - Fatal编程技术网

Unit testing 通过app.config配置Unity(2.x)以使用Moq作为实现

Unit testing 通过app.config配置Unity(2.x)以使用Moq作为实现,unit-testing,inversion-of-control,unity-container,moq,Unit Testing,Inversion Of Control,Unity Container,Moq,我为国际奥委会使用团结。我想使用app.config配置moq对象的创建。 我的配置如下所示: <unity xmlns="schemas.microsoft.com/practices/2010/unity"> <container> <register type="Namespace1.IFoo, FooInterface" mapTo="Namespace2.FooImp, FooI

我为国际奥委会使用团结。我想使用app.config配置moq对象的创建。 我的配置如下所示:

<unity xmlns="schemas.microsoft.com/practices/2010/unity">
  <container>
    <register type="Namespace1.IFoo, FooInterface"                   
              mapTo="Namespace2.FooImp, FooImplementation">
    </register>
</container>
</unity>
<unity xmlns="schemas.microsoft.com/practices/2010/unity">
  <container>
    <register type="Namespace1.IFoo, FooInterface"                   
              mapTo="Moq.Mock<IFoo>, Moq">
    </register>
</container>
</unity>

我正在寻找一种技术来指定如下配置:

<unity xmlns="schemas.microsoft.com/practices/2010/unity">
  <container>
    <register type="Namespace1.IFoo, FooInterface"                   
              mapTo="Namespace2.FooImp, FooImplementation">
    </register>
</container>
</unity>
<unity xmlns="schemas.microsoft.com/practices/2010/unity">
  <container>
    <register type="Namespace1.IFoo, FooInterface"                   
              mapTo="Moq.Mock<IFoo>, Moq">
    </register>
</container>
</unity>

我知道我必须访问Mock的.Object属性,但这个示例只是为了解释我想做什么


换句话说:我不想使用代码将unity配置为使用moq。当然,一个选择是创建一些可以在一般情况下使用的助手。

在没有人可以帮助我之后,我想出了一些办法

使用工厂进行moq,并通过unity添加工厂分辨率


示例开始

您希望Moq为容器创建的每个对象创建实例,还是仅为特定实例创建实例?如何验证对模拟的调用是否已发出?如何设置模拟的返回值?我想使用特定类型。我不想用模拟容器替换unitycontainer。我将通过将模拟的生存期限制为单例来进行设置和验证。因此,您希望通过配置注册
Mock
的单例生存期,告诉容器你想通过config使用
Mock.Object
作为
IFoo
的实现,然后通过代码为你的Mock(你必须首先从容器中解析)设置期望值和返回值?你为什么要这样做?@SebastianWeber。原因很简单:有时您只想禁用组件,而不需要验证调用等。