exponenta event banner

matlab.mock.constraints.Cened class

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

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

Описание

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

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

По умолчанию ограничение определяет, что все взаимодействия происходили по крайней мере один раз и в любом порядке. RespectingOrder пара имя-значение позволяет определить, что взаимодействия произошли в указанном порядке.

Строительство

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

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

Входные аргументы

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

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

Типы данных: logical

Свойства

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

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

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

Типы данных: logical

Копирование семантики

Значение. Сведения о том, как классы значений влияют на операции копирования, см. в разделе Копирование объектов.

Примеры

свернуть все

Создайте макет для класса персон.

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