使用Moq进行单元测试和伪造静态方法

时间:2015-11-07 23:10:49

标签: c# asp.net-mvc unit-testing moq

以下是情景 -

Class 1是帮助类:

class Helper
{
    IInterface abc
    {
        // some code in get and set
        get;set;
    }
    public static string Method1(){
        return abc.method();
    }
}

现在我有一个控制器类,它有一个动作方法:

public virtual string GetStrFromMethod
{
    get 
    {
        return Helper.Method1();
    }
}

public ViewResult Action() {
    // here I am calling Method1 like this
    var str = GetStrFromMethod;
}

现在我想从测试类中伪造虚拟属性,因此我这样做:

var mock = new Moq<ControllerClass>();
mock.SetupGet(x => x.GetStrFromMethod).Returns("str");

当我运行此测试时,我期待当动作查找属性GetStrFromMethod时,它应该返回moq test中设置的假值。但是我在helper class abc properties中遇到以下错误:

“尚未设置程序集目录。”

我知道伪造静态方法的一种方法是包装我已经完成的虚方法。我在这里缺少什么?

0 个答案:

没有答案