[英]Unit testing using Mock in MVC
我正在尝试为类中的方法实施单元测试。 如何在正在测试的类方法上模拟基类索引器? 下面的代码片段应清楚说明我的要求。
public class MyClass:MyBase
{
public string returnString(string str1)
{
var xyz=base[str1];
//My code to unit test is here
}
}
public class MyBase
{
public virtual string this[string str1]
{
return "prefix"+str1;
}
}
我想用一个虚拟字符串存根我的基类索引器并测试我的实际代码。 我怎样才能做到这一点? 感谢您对此事的任何帮助。
真是
通常不建议这样做,但在这种情况下是“适当的”:模拟正在测试的类。 当然,在这种情况下,您只会嘲笑特定于基类的内容,而不会以任何方式覆盖您的后代。 这样可以确保模拟基类的行为,并因此在测试后代的方法时处于测试的控制之下。
在您的示例中,您将创建MyClass的模拟,但仅模拟继承的(MyBase的)构造函数,从而确保所有其他方法均按“已编码”运行,然后针对模拟的实例进行断言。
我看不到对您的基类进行存根的原因,因为您可以模拟正在测试的类。 我会给你看。
我在returnString()方法中添加了return语句,只是为了断言来完成测试:
public string returnString (string str1)
{
var xyz = base [str1];
return xyz;
}
现在测试:
[TestMethod, Isolated]
public void TestIndexerFake()
{
//Arrange
var MyClassFake = Isolate.Fake.AllInstances<MyClass>(Members.CallOriginal);
Isolate.WhenCalled(() => MyClassFake["test"]).WillReturn("fake!");
//Act
MyClass target = new MyClass();
var result = target.returnString("test");
//Assert
Assert.AreEqual("fake!", result);
}
我正在使用Typemock隔离器和MsTest。
希望能帮助到你!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.