matlab.mock.constraints.Occurred class

Пакет: matlab.mock.constraints
Суперклассы:

Ограничение, квалифицирующее взаимодействия фиктивного объекта

Описание

Occurred ограничение квалифицирует вхождение одного или нескольких взаимодействий фиктивного объекта. Это производит отказ проверки для любого массива фактического значения, который задает по крайней мере одно взаимодействие, которое не произошло. Фактическое значение должно быть массивом MethodCallBehavior, PropertyGetBehavior, или PropertySetBehavior объекты, которые все отсылают к тому же фиктивному объекту.

Используйте Occurred ограничение, чтобы квалифицировать любую комбинацию вызовов метода, доступов к свойству или модификаций свойства.

По умолчанию ограничение квалифицирует это все, взаимодействия произошли, по крайней мере, однажды и в любом порядке. RespectingOrder пара "имя-значение" включает проверку, что взаимодействия произошли в заданном порядке.

Конструкция

constraint = matlab.mock.constraints.Occurred обеспечивает ограничение, которое определяет, произошли ли все заданные взаимодействия.

constraint = matlab.mock.constraints.Occurred('RespectingOrder',tf) обеспечивает ограничение, которое уважает порядок вхождения заданных взаимодействий.

Входные параметры

развернуть все

Уважать ли порядок взаимодействий в виде false или true. По умолчанию ограничение не требует, чтобы взаимодействия произошли в заданном порядке.

Типы данных: логический

Свойства

развернуть все

Это свойство доступно только для чтения.

Уважает ли ограничение порядок взаимодействий, сохраненных как false или true. RespectOrder свойством является false по умолчанию, но может быть установлен в true во время конструкции ограничения при помощи 'RespectingOrder' пара "имя-значение".

Типы данных: логический

Примеры

свернуть все

Создайте макет для класса человека.

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

Используйте макет путем вызова speak метод, получая доступ к Age свойство и установка Name свойство.

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

Проверьте что вызов speak метод с входом "hello" произошедший.

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

Проверьте что Age к свойству получили доступ, speak метод был вызван "hello", и Name свойство было установлено в "Zed".

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

Повторите верификацию, но потребуйте, чтобы ограничению удовлетворили, только если взаимодействия произошли в заданном порядке. Этот тест перестал работать потому что speak метод был назван перед Age свойство было установлено.

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