相关疑难解决方法(0)

什么是控制倒置?

控制反转(或IoC)在第一次遇到时会非常混乱.

  1. 它是什么?
  2. 它解决了哪个问题?
  3. 何时适合使用,何时不适用?

oop design-patterns inversion-of-control

1704
推荐指数
30
解决办法
46万
查看次数

如何模拟(使用Moq)Unity方法

扩展方法不适合测试(这里描述:使用Moq模拟扩展方法,http://www.clariusconsulting.net/blogs/kzu/archive/2009/12/22/Howtomockextensionmethods.aspx).

但是可能有一些模拟Unity方法的解决方案?在我的情况下,我有以下功能:

public class MyManager
{
    public MyManager(IUnityContainer container) : base(container) { }

    public IResult DoJob(IData data)
    {
        IMyLog log = MyContainer.Resolve<IMyLog>();

        ... use log.Id ...

        MyContainer.Resolve<...>();//usage for other purposes...
    }
Run Code Online (Sandbox Code Playgroud)

我想确定'DoJob'方法总是从容器中获取'IMyLog'对象,但不是来自其他来源......我怎么能测试它?

我最初的想法是改变'DoJob'方法的实现和使用:

IMyLog log = UnityContainer.Resolve(typeof(IMyLog)) as IMyLog;
Run Code Online (Sandbox Code Playgroud)

但'Resolve(Type t,...)'也是一种扩展方法......

欢迎任何想法.

PS请注意,"我的日志"对象是远离MyManager.DoJob创建的...

.net extension-methods unit-testing moq mocking

13
推荐指数
3
解决办法
2万
查看次数