进步Telerik JustMock

模拟静态类、方法和属性

  • 特性丰富的JustMock框架的强大功能允许您模拟静态类和对静态成员(如方法和属性)的调用,设置期望并验证结果。
  • 这个特性是用于制作单元测试的最快、最灵活和最完整的模拟工具的一部分。
  • 我们屡获殊荣的支持团队致力于帮助您解决应用程序开发过程中可能遇到的任何问题和问题。
嘲笑一切
Nasa, Visa,微软 福克斯,三星,IBM 世界银行集团,沃尔沃
  • 模拟静态类、方法和属性概述

    静态类在本质上与非静态类非常相似。这两个类之间的区别是静态类不能被实例化。new操作符不能创建类类型的变量。因为没有实例变量,所以应该使用类名本身来访问静态类的成员。

    特性丰富的JustMock框架的强大功能允许您模拟静态类和对静态成员(如方法和属性)的调用,设置期望并验证结果。

    要在JustMock中模拟静态类型,首先需要实现以下设置:
    
                  
    模拟。SetupStatic (typeof(MyStaticType));
  • 模拟静态构造函数

    静态构造函数用于初始化任何静态数据或只执行一次特定操作。使用JustMock,您可以控制是否模拟静态构造函数或执行原始的静态构造函数。

    
                  
    模拟。SetupStatic (typeof(MyStaticType) StaticConstructor.Mocked);
    静态构造函数的行为只执行一次。

    模拟静态构造函数文档
  • 模拟静态方法

    要模拟静态方法,必须首先为模拟设置所有者类。

    
                  
    (TestMethod)
    公共无效ShouldMockStaticClassWithStrictBehavior ()
    Var期望= 10;
    / /安排
    //获取静态实例(Foo),以便忽略构造函数进行模拟。
    //如果不模拟构造函数,将抛出NotImplementedException。
    模拟。SetupStatic (typeof(Foo), StaticConstructor.Mocked);
    //排列:当Foo.Execute()方法用10调用时,它应该返回预期的结果。
    Mock.Arrange(() => Foo.Execute(10)).Returns(预期);
    / /行为
    var actual = Foo.Execute(10);
    / /维护
    断言。AreEqual(预期,实际);

    模拟静态方法文档
  • 模拟静态属性Getter

    模拟静态属性getter与模拟静态方法一样简单。下面的例子展示了如何模拟静态属性的get函数:

    
                  
    公共喷火
    静态Foo ()
    NotImplementedException ();
    公共静态intFooProperty
    得到
    NotImplementedException ();
    NotImplementedException ();
    ...
    (TestMethod)
    公共无效ShouldArrangeStaticProperty ()
    Var期望= 0;
    / /安排
    //获取静态实例(Foo),以便忽略构造函数进行模拟。
    //如果不模拟构造函数,将抛出NotImplementedException。
    模拟。SetupStatic (typeof(Foo), StaticConstructor.Mocked);
    //排列:当static(Foo.FooProp_GET)属性被调用时,它应该返回预期的结果。
    Mock.Arrange(() => Foo.FooProperty).Returns(预期);
    / /维护
    断言。AreEqual(预期,Foo.FooProp);

    模拟静态属性getter文档
  • 模拟静态属性集

    模拟静态属性setter与模拟静态属性getter的工作方式不同。虽然getter的lambda函数可以缩小为表达式,但setter的函数只能通过操作和不同的API完成:

    
                  
    公共喷火
    静态Foo ()
    NotImplementedException ();
    公共静态intFooProperty
    得到
    NotImplementedException ();
    NotImplementedException ();
    ...
    (TestMethod)
    公共无效ShouldFakeStaticPropertySet ()
    保龄球又叫=
    / /安排
    //获取静态实例(Foo),以便忽略构造函数进行模拟。
    //如果不模拟构造函数,将抛出NotImplementedException。
    模拟。SetupStatic (typeof(Foo), StaticConstructor.Mocked);
    //排列:当static(Foo.FooProp_SET)属性设置为10时,它应该将true赋值给isCalled。
    Mock.ArrangeSet(() => {Foo。FooProperty = 10;}).DoInstead(() => {isCalled =真正的;});
    / /行为
    Foo。喷火Prop = 10;
    / /维护
    Assert.IsTrue(思想);

    模拟静态属性setter文档
  • 模拟扩展方法

    扩展方法是一种特殊的静态方法。它们就像扩展类型上的实例方法一样被调用。模拟扩展方法类似于模拟任何实例方法。唯一的区别是我们不需要Mock.Create T < > ()默认情况下,将类初始化为扩展模拟的调用是局部的。

    
                  
    公共静态FooExtensions
    公共静态字符串回声(Foo Foo,字符串值)
    返回价值;
    ...
    (TestMethod)
    公共无效ShouldAssertExtensionMethodMockingWithArguments ()
    字符串预期=“酒吧”
    / /安排
    Var foo =Foo ();
    //排列:当扩展方法foo.Echo()使用任何字符串参数被调用时,
    //返回预期值。
    Mock.Arrange(() => foo.Echo(Arg.IsAny<字符串> ())) .Returns(预期);
    / /行为
    字符串Actual = foo。回声(“你好”);
    / /维护
    断言。AreEqual(预期,实际);

    模拟扩展方法文档
Background-NextSteps

下一个步骤

参见计划和定价

购买单独的产品或任何捆绑

下载免费试用

有专门的技术支持。

Baidu
map