Main Content

matlab.mock.constraints.Occurred 类

命名空间: matlab.mock.constraints
超类:

限定 mock 对象交互的约束

描述

Occurred 约束限定一个或多个 mock 对象交互的发生。如果任何实际值数组指定的交互中有至少一个未发生,则它会为该数组生成一个鉴定失败。实际值必须是 MethodCallBehaviorPropertyGetBehaviorPropertySetBehavior 对象的数组,这些对象都引用同一个 mock 对象。

使用 Occurred 约束可限定方法调用、属性访问或属性修改的任何组合。

默认情况下,该约束限定所有交互至少发生一次且可以按任何顺序发生。RespectingOrder 名称-值对组支持将交互鉴定为以指定顺序发生。

构造

constraint = matlab.mock.constraints.Occurred 提供一个约束,用于确定是否发生了所有指定的交互。

constraint = matlab.mock.constraints.Occurred('RespectingOrder',tf) 提供一个约束,该约束限定指定交互是否遵循指定的发生顺序。

输入参数

全部展开

是否遵循交互的顺序,指定为 falsetrue。默认情况下,约束不要求交互以指定顺序发生。

数据类型: logical

属性

全部展开

此 属性 为只读。

约束是否遵守交互的顺序,存储为 falsetrueRespectOrder 属性默认为 false,但在构造约束期间可以使用 'RespectingOrder' 名称-值对组设置为 true

数据类型: logical

复制语义

值。要了解值类如何影响复制操作,请参阅复制对象

示例

全部折叠

为 person 类创建一个 mock。

testCase = matlab.mock.TestCase.forInteractiveUse;
[fakePerson,behavior] = testCase.createMock("AddedProperties",["Name","Age"], ...
    "AddedMethods","speak");

通过调用 speak 方法、访问 Age 属性并设置 Name 属性来使用 mock。

fakePerson.speak("hello");
age = fakePerson.Age;
fakePerson.Name = "Zed";

验证发生了使用输入 "hello"speak 方法的调用。

import matlab.mock.constraints.Occurred;
testCase.verifyThat(behavior.speak("hello"),Occurred)
Verification passed.

验证访问了 Age 属性、使用 "hello" 调用了 speak 方法并且 Name 属性已设置为 "Zed"

testCase.verifyThat([get(behavior.Age), ...
    behavior.speak("hello"), ...
    behavior.Name.setToValue("Zed")],Occurred)
Verification passed.

重复验证,但要求仅在按指定顺序发生交互时才满足约束。未通过测试,因为在设置 Age 属性之前调用了 speak 方法。

testCase.verifyThat([get(behavior.Age), ...
    behavior.speak("hello"), ...
    behavior.Name.setToValue("Zed")],Occurred('RespectingOrder',true))
Verification failed.

    ---------------------
    Framework Diagnostic:
    ---------------------
    Occurred failed.
    --> All specified interactions occurred.
    --> The interactions did not occur in the specified order.
        Actual order:
            speak([1×1 matlab.mock.classes.Mock], "hello")
            <Mock>.Age
            <Mock>.Name = "Zed"
    
    Specified interactions:
      1×3 heterogeneous InteractionBehavior (PropertyGetBehavior, MethodCallBehavior, PropertySetBehavior) array with no properties.
    
        <Mock>.Age
        [...] = speak(<Mock>, "hello")
        <Mock>.Name = "Zed"

重复验证并指定交互按另一种顺序发生。

testCase.verifyThat([behavior.speak("hello"), ...
    get(behavior.Age), ...
    behavior.Name.setToValue("Zed")],Occurred('RespectingOrder',true))
Verification passed.

版本历史记录

在 R2018b 中推出