matlab.mock.constraints.Occurred class

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

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

Описание

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

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

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

Конструкция

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

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

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

расширить все

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

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

Свойства

расширить все

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

Уважает ли ограничение порядок взаимодействий, сохраненный как false или true. The 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